洛谷 P2074 危險區域

小黑哎呀發表於2021-01-05

P2074 危險區域

菜鳥生成記(24)

又是一道水題;差一點被這道題的標籤(高效能 搜尋)騙到;

我上來直接整個dfs,認真把題又看一遍後;這就是一個"披著狼皮的羊";

不過這道題也是有坑點的;

(1)不能開二維陣列,然後再標記矩陣計數,因為n,m<=1e+5(10的5次方),開個二維陣列後絕對爆棧(蒻羈在 藍橋 大臣的旅費 就被爆棧的二維陣列坑過)

(2)雙迴圈遍歷時,縮小範圍,x-t<=i<=x+t;y-t<=j<=y+t;(x,y爆炸點座標);1<=i<=n;1<=j<=m;這樣會超時(親測有效50%)

#include<bits/stdc++.h>
using namespace std;
int n,m;
int max1=0;// 
void fun(int x,int y,int t)
{
	int len=0;
	for(int i=x-t;i<=x+t;i++)
	{
		for(int j=y-t;j<=y+t;j++)
		if(i<=n&&j<=m&&i>=1&&j>=1)//防止越界 
		if(sqrt(pow(i-x,2)+pow(j-y,2))<=t)//判斷範圍 
		{
			len++;//波及街區計數 
		}
	}//記錄波及最多的街區數 
	max1=max(max1,len);
}
int main()
{
	
	int k,t;
	cin>>n>>m>>k>>t;
	for(int i=0;i<k;i++)
	{
		int x,y;
		cin>>x>>y;
		fun(x,y,t);
	}
	cout<<max1;
	return 0;
}