题解 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;
}
posted @ 2020-10-24 19:38  Little09  阅读(71)  评论(0)    收藏  举报