ABC C 求调
  • 板块学术版
  • 楼主Qiu101029
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/12/7 21:47
  • 上次更新2024/12/8 09:36:59
查看原帖
ABC C 求调
1200904
Qiu101029楼主2024/12/7 21:47
#include<cstdio>
#include<queue>
using namespace std;
int ans;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
char mp[1005][1005];
queue<pair<int,int> >q;
int main(){
	int n,m,d;scanf("%d%d%d",&n,&m,&d);
	for(int i=1;i<=n;i++) scanf("%s",mp[i]+1);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(mp[i][j]=='H'){
				ans++;
				q.push(make_pair(i,j));
				for(int k=1;k<=d;k++){
					int z=q.size();
					for(int a=1;a<=z;a++){
						pair<int,int>tmp=q.front();q.pop();
						for(int p=0;p<4;p++){
							int x=tmp.first+dx[p],y=tmp.second+dy[p];
							if(x<1||x>n||y<1||y>m) continue;
							if(mp[x][y]!='H'&&mp[x][y]!='#'){
								if(mp[x][y]=='.') ans++;
								mp[x][y]='*';
								q.push(make_pair(x,y));
							}
						}
					}
					if(q.empty()) break;
				}
				while(!q.empty()) q.pop();
			}
		}
	}
	printf("%d",ans);
	return 0;
}

该代码 TLE

2024/12/7 21:47
加载中...