无线网络发射器选址

noip2014年,题面就不说了。此题应该就是个暴力枚举,枚举出所有满足正方形原则的点加起来,如果最大值相同,方案数++,以此类推,又找到新的最大值,方案数变为1,更新最大值,此题最重点的应该是怎么去枚举,看完了题解,我发现有好多种思路,要找代码最简单的QAQ。让有公共场所的地标去依次减去你枚举的下界地标,如果在d的范围内就ok,加上公共场所个数,就OK了

代码

#include<bits/stdc++.h>
using namespace std;
int x[100010],y[100010],z[100010];long long maxx=-1;
int main()
{
	int d,n;
	cin>>d>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>x[i]>>y[i]>>z[i];
	}
	int cnt=0;
	for(int i=0;i<=128;i++)
	{
		for(int j=0;j<=128;j++)
		{
			long long ans=0;
			for(int k=1;k<=n;k++)
			{
				if(abs(x[k]-i)<=d&&abs(y[k]-j)<=d)
				{
					ans+=z[k];
				}
			}
			if(ans==maxx)
			cnt++;
			if(ans>maxx)
			{
				maxx=ans;
				cnt=1;
			}
		}
	}
	cout<<cnt<<' '<<maxx;
}

留下评论

通过 WordPress.com 设计一个这样的站点
从这里开始