社区讨论

BFS50分求助

P2038[NOIP 2014 提高组] 无线网络发射器选址参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo7w2632
此快照首次捕获于
2023/10/27 08:42
2 年前
此快照最后确认于
2023/10/27 08:42
2 年前
查看原帖
比较奇怪的做法……
思路是以公共场所为中心bfs向外以半径d扩散,再把搜索到的点加上公共场所数量的权值,如图
CPP
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-10-10-10-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-10-O -10-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-10-10-30 -20-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-20-O -20-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-20-20-20-|-|-|-|-|-|-|-|-|-|-
代码:
CPP
#include <bits/stdc++.h>
#define int long long
using namespace std;
int d,n;
int x[100],y[100],k[100];
int m[200][200];
int step[200][200];
bool vis[200][200];
int dir[8][2]={{1,0},{0,1},{-1,0},{0,-1},{1,-1},{-1,1},{1,1},{-1,-1}};
void bfs(int x0,int y0,int k0)
{
	memset(vis,false,sizeof(vis));
	memset(step,0,sizeof(step));
	queue<int> qx,qy;
	vis[x0][y0]=true;
	step[x0][y0]=0;
	qx.push(x0),qy.push(y0);
	while(!qx.empty())
	{
		int xx=qx.front();
		int yy=qy.front();
		qx.pop();qy.pop();
		for (int i=0;i<8;i++)
		{
			int dx=xx+dir[i][0];
			int dy=yy+dir[i][1];
			if (dx>=0&&dy>=0&&dx<=128&&dy<=128&&vis[dx][dy]==false&&step[xx][yy]+1<=d)
			{
				m[dx][dy]+=k0;
				vis[dx][dy]=true;
				step[dx][dy]=step[xx][yy]+1;
				qx.push(dx);
				qy.push(dy);
			}
		}
	}
}
signed main()
{
	scanf("%d%d",&d,&n);
	for (int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&x[i],&y[i],&k[i]);
		bfs(x[i],y[i],k[i]);
	}
	int maxn=-0x3f;
	for (int i=0;i<=128;i++)
	{
		for (int j=0;j<=128;j++)
		{
			//cout << m[i][j] << " ";
			if (m[i][j]>maxn)
			{
				maxn=m[i][j];
			}
		}
		//cout << endl;
	}
	int cnt=0;
	for (int i=0;i<=128;i++)
	{
		for (int j=0;j<=128;j++)
		{
			if (m[i][j]==maxn)
			{
				cnt++;
			}
		}
	}
	cout << cnt << " " << maxn << endl;
	return 0;
}


/*
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-O-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-O-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-
*/

回复

0 条回复,欢迎继续交流。

正在加载回复...