解析
没什么好说的,又是一道可以直接暴力的水题
(说得好像你一次就满分似的)
读题一定要认真,别像我完全没看到边界,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;
}