题解 CF1408D 【Searchlights】
根据题意,对于每个强盗和每盏灯的关系,我们列出 \(n*m\) 个条件,第 \(i\) 个条件是满足 \(x>a_i\) 或 \(y>b_i\)。我们列出所有条件,按 \(a_i\) 排个序,枚举一下可以满足哪几个条件,然后更新答案就可以了。
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=2100000000;
struct point
{
int x,y;
}q[4200001],a[2001],b[2001];
bool cmp(point x,point y)
{
return x.x>y.x;
}
int main()
{
cin >> n >> m;
for (int i=1;i<=n;i++)
{
cin >> a[i].x >> a[i].y;
}
for (int i=1;i<=m;i++)
{
cin >> b[i].x >> b[i].y;
}
int cnt=0;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
{
point u;
if (a[i].x>b[j].x) continue;
u.x=b[j].x-a[i].x+1;
if (a[i].y>b[j].y) continue;
u.y=b[j].y-a[i].y+1;
q[++cnt]=u;
}
}
sort(q+1,q+cnt+1,cmp);
int maxy=0;
for (int i=1;i<=cnt;i++)
{
ans=min(ans,q[i].x+maxy);
maxy=max(maxy,q[i].y);
}
ans=min(ans,maxy);
cout << ans;
return 0;
}