样例过了全WA求条
查看原帖
样例过了全WA求条
747732
sunpengyu楼主2024/10/20 13:33
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=3e3+7;
const int maxm=1e5+7;
int n,m,q,r,kt,mp[maxn][maxn],vis[maxn][maxn],s=1,sum;
struct tree{
	int tim,x,y;
}t[maxm];
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m>>q>>r>>kt;
	for(int i=1;i<=q;i++){
		int a1,b1,a2,b2;
		cin>>a1>>b1>>a2>>b2;
		for(int j=a1;j<=a2;j++){
			for(int k=b1;k<=b2;k++){
				mp[j][k]=1;
			}
		}
	}
	for(int i=1;i<=r;i++){
		cin>>t[i].tim>>t[i].x>>t[i].y;
	}
	for(int i=1;;i++){
		for(int j=1;j<=n;j++){
			for(int k=1;k<=m;k++){
				if(vis[j][k]){
					vis[j][k]++;
					if(vis[j][k]>kt+1){
						if(!(vis[j-1][k]||vis[j+1][k]||vis[j][k-1]||vis[j][k+1])){
							vis[j][k]=0;
						}
					}
				}
			}
		}
		for(int j=1;j<=n;j++){
			for(int k=1;k<=m;k++){
				if(mp[j][k]==0&&vis[j][k]==0){
					if(vis[j-1][k]||vis[j+1][k]||vis[j][k-1]||vis[j][k+1]){
						if(mp[j-1][k]||mp[j+1][k]||mp[j][k-1]||mp[j][k+1]){
							vis[j][k]=1;
						}
					}
				}
			}
		}
		if(s!=r+1){
			for(int j=s;;j++){
				if(j>r){
					s=r+1;
					break;
				}
				if(t[j].tim>i){
					s=j;
					break;
				}
				vis[t[j].x][t[j].y]=1;
			}
		}
		int sum1=0;
		for(int j=1;j<=n;j++){
			for(int k=1;k<=m;k++){
				if(vis[j][k]){
					sum1++;
				}
			}
		}
		if(sum==sum1){
			cout<<sum;
			break;
		}else{
			sum=sum1;
		}
	}
	return 0;
}
2024/10/20 13:33
加载中...