CF1408D Searchlights(枚举+思维)

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+100;
int n,m;
int a[maxn],b[maxn];
int c[maxn],d[maxn];
int cnt[maxn];
int main () {
    scanf("%d%d",&n,&m);
    for (int i=1;i<=n;i++) scanf("%d%d",a+i,b+i);
    for (int i=1;i<=m;i++) scanf("%d%d",c+i,d+i);
    for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) if (a[i]<=c[j]) cnt[c[j]-a[i]]=max(cnt[c[j]-a[i]],d[j]-b[i]+1);
    int ans=1e9;
    int Max=0;
    for (int dx=maxn-1;dx>=0;dx--) {
        Max=max(Max,cnt[dx]);
        ans=min(ans,dx+Max);
    }
    printf("%d
",ans);
}
原文地址:https://www.cnblogs.com/zhanglichen/p/13757859.html