1806. [NOIP2014]无线网路发射器选址
☆ 输入文件:wireless.in
输出文件:wireless.out
简单对比
时间限制:1 s
内存限制:128 MB
【题目描述】
//读入每一个点时,将其所在矩形的每一个点+k,最后取最大的点 #include<cstdio> #include<iostream> using namespace std; int d,n,i,j,k,s=0,sum=0,mx1=128,mx2=0,my1=128,my2=0; int map[129][129]={0},x,y,x1,x2,y1,y2,u,v; inline int read() { int x=0;char c=getchar(); while(c<'0'||c>'9')c=getchar(); while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar(); return x; } main() { freopen("wireless.in","r",stdin); freopen("wireless.out","w",stdout); d=read(),n=read(); for(i=1;i<=n;i++) { x=read(),y=read(),k=read(); x1=max(0,x-d); x2=min(128,x+d); y1=max(0,y-d); y2=min(128,y+d); mx1=min(mx1,x1); mx2=max(mx2,x2); my1=min(my1,y1); my2=max(my2,y2);
for(u=x1;u<=x2;u++) for(v=y1;v<=y2;v++) map[u][v]+=k; } for(i=mx1;i<=mx2;i++) for(j=my1;j<=my2;j++) if(s<map[i][j]) s=map[i][j], sum=1; else if(s==map[i][j]) sum++; printf("%d %d",sum,s); return 0; }