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; }
原文地址:https://www.cnblogs.com/lyqlyq/p/7127765.html