求调,O(n^3),不用memset不会做
查看原帖
求调,O(n^3),不用memset不会做
684866
wangborui123楼主2023/12/23 10:59

怎么优化啊啊啊

#include <bits/stdc++.h>
using namespace std;
char a[2005][2005];
struct h
{
	int x,y;
};
int z[5][5]={{1,0},{-1,0},{0,1},{0,-1}};
queue<h>q;
bool f[2005][2005];
int main()
{
	int ans=0;
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int t=0;t<m;t++)
	{
		int u,v;
		cin>>u>>v;
		q.push((h){u,v});
		while(!q.empty())
		{
			h now=q.front();
			int ux=now.x,uy=now.y;
			q.pop();
			if(ux<1 or ux>n or uy<1 or uy>n or f[ux][uy]==1)
			{
				continue;
			}
			f[ux][uy]=1;
			ans++;
			for(int i=0;i<4;i++)
			{
				if(a[ux+z[i][0]][uy+z[i][1]]!=a[ux][uy])q.push((h){ux+z[i][0],uy+z[i][1]});
			}
		}
		memset(f,0,sizeof(f));//知道问题在这里但是不会优化了,求调
		cout<<ans<<endl;
		ans=0;
	}
	return 0;
}

}
2023/12/23 10:59
加载中...