1. 程式人生 > >NOIP2014day2T1————無線網路發射器選址(wireless)

NOIP2014day2T1————無線網路發射器選址(wireless)

又是你谷

解析

沒什麼好說的,又是一道可以直接暴力的水題
(說得好像你一次就滿分似的)
讀題一定要認真,別像我完全沒看到邊界,WA了
小於0就修改為0,大於128就修改為128
然後我直接去染的色,半徑為d時,能到達這個點的位置都加上這個點的大小
一邊染一邊處理就行了

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int d,n,ans_num,ans_max;
int a[150][150],wifi[150][150];
int main()
{
//	freopen("wireless.in","r",stdin);
//	freopen("wireless.out","w",stdout);
	
	int x,y,z;
	scanf("%d",&d);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		a[x][y]=z;
		int x1=x-d,x2=x+d,y1=y-d,y2=y+d;
		if(x1<0) x1=0;
		if(x2>128) x2=128;
		if(y1<0) y1=0;
		if(y2>128) y2=128;
		for(int j=x1;j<=x2;j++)
		  for(int k=y1;k<=y2;k++)
		  {
		  	wifi[j][k]+=z;
		  	if(wifi[j][k]==ans_max) ans_num++;
		  	 else if(wifi[j][k]>ans_max)
		  	 {
		  		ans_max=wifi[j][k];
		  		ans_num=1;//這裡一定是等於1,不能直接清零
		  	 }
		  }
	}
	printf("%d %d\n",ans_num,ans_max);
	
//	fclose(stdin);fclose(stdout);
	return 0;
}