京师后人(P1789)
查看原帖
京师后人(P1789)
1379724
liuchenjia12345楼主2025/1/21 16:54

#2#3点RE可能是二维数组开大了,建议大小a[1005][1005]

————————附带代码————————

#include<bits/stdc++.h>
using namespace std;
int a[1005][1005];
int main(){
	int n,m,k,x,y;
	cin>>n>>m>>k;
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		a[x][y]=-1;
	}
	for(int i=0;i<k;i++){
		cin>>x>>y;
		a[x][y]=-2;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i][j]==-1){
				if(a[i-1][j]==0)a[i-1][j]=1;
				if(a[i-2][j]==0)a[i-2][j]=1;
				if(a[i+1][j]==0)a[i+1][j]=1;
				if(a[i+2][j]==0)a[i+2][j]=1;
				if(a[i][j+1]==0)a[i][j+1]=1;
				if(a[i][j-1]==0)a[i][j-1]=1;
				if(a[i][j-2]==0)a[i][j-2]=1;
				if(a[i][j+2]==0)a[i][j+2]=1;
				if(a[i-1][j-1]==0)a[i-1][j-1]=1;
				if(a[i-1][j+1]==0)	a[i-1][j+1]=1;
				if(a[i+1][j-1]==0)a[i+1][j-1]=1;
				if(a[i+1][j+1]==0)a[i+1][j+1]=1;
			}
			else if(a[i][j]==-2){
				for(int k=i-2;k<=i+2;k++){
					for(int k2=j-2;k2<=j+2;k2++){
						if(a[k][k2]==-1||a[k][k2]==-2){
							continue;
						}
						a[k][k2]=1;
					}
				}
			}
		}
	}
	int s=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(a[i][j]==0){
				s++;
			}
		}
	}
	cout<<s;
}

————————附带代码————————

2025/1/21 16:54
加载中...