| 比赛 |
2026.9.12 |
评测结果 |
AAAATTTTTT |
| 题目名称 |
彩色卡牌 |
最终得分 |
40 |
| 用户昵称 |
exil |
运行时间 |
25.188 s |
| 代码语言 |
C++ |
内存使用 |
8.34 MiB |
| 提交时间 |
2026-09-12 11:20:24 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define int long long
int zhi[505][505];
int tu[505][505];
int pan[505][505];
signed main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int r,c,q;
cin>>r>>c>>q;
for(int i = 1;i<=r;i++){
for(int j = 1;j<=c;j++){
cin>>zhi[i][j];
}
}
for(int i = 1;i<=r;i++){
for(int j = 1;j<=c;j++){
cin>>tu[i][j];
}
}
for(int i = 1;i<=q;i++){
int pos;
cin>>pos;
if(pos==1){
int x,y,z;
cin>>x>>y>>z;
tu[x][y]=z;
}
else{
int x,y,z;
cin>>x>>y>>z;
queue<int>q[2];
if(zhi[x][y]>z){
cout<<0<<"\n";
continue;
}
q[0].push(x);
q[1].push(y);
set<int>s;
s.insert(tu[x][y]);
for(int i = 1;i<=r;i++)for(int j = 1;j<=c;j++)pan[i][j]=0;
pan[x][y]=1;
while(!q[0].empty()){
int nox=q[0].front();
y=q[1].front();
q[0].pop();
q[1].pop();
if(nox-1>0 && zhi[nox-1][y]<=z && pan[nox-1][y]==0){
pan[nox-1][y]=1;
s.insert(tu[nox-1][y]);
q[0].push(nox-1);
q[1].push(y);
}
if(nox+1<=r && zhi[nox+1][y]<=z && pan[nox+1][y]==0){
pan[nox+1][y]=1;
s.insert(tu[nox+1][y]);
q[0].push(nox+1);
q[1].push(y);
}
if(y-1>0 && zhi[nox][y-1]<=z && pan[nox][y-1]==0){
pan[nox][y-1]=1;
s.insert(tu[nox][y-1]);
q[0].push(nox);
q[1].push(y-1);
}
if(y+1<=c && zhi[nox][y+1]<=z && pan[nox][y+1]==0){
pan[nox][y+1]=1;
s.insert(tu[nox][y+1]);
q[0].push(nox);
q[1].push(y+1);
}
}
cout<<s.size()<<"\n";
}
}
return 0;
}