| 比赛 |
2026.9.12 |
评测结果 |
AAAATTTTTT |
| 题目名称 |
彩色卡牌 |
最终得分 |
40 |
| 用户昵称 |
郑霁桓 |
运行时间 |
25.015 s |
| 代码语言 |
C++ |
内存使用 |
6.64 MiB |
| 提交时间 |
2026-09-12 10:22:36 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
queue<pair<int,int> >q;
int n,m,qq,op,x,y,c,as,a[505][505],b[505][505],vs[505][505],vis[250005];
int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>qq;
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>b[i][j];
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
while(qq--){
cin>>op>>x>>y>>c;
if(op==1) a[x][y]=c;
else{
if(b[x][y]>c){
cout<<"0\n";
continue;
}
while(!q.empty()) q.pop();
q.push({x,y});
vs[x][y]=qq+3,as=0;
while(!q.empty()){
int xx=q.front().first,yy=q.front().second;
q.pop();
if(vis[a[xx][yy]]!=qq+3){
as++;
vis[a[xx][yy]]=qq+3;
}
for(int i=0;i<4;i++){
int px=xx+dx[i],py=yy+dy[i];
if(px<1||py<1||px>n||py>m||vs[px][py]==qq+3||b[px][py]>c) continue;
vs[px][py]=qq+3,q.push({px,py});
}
}
cout<<as<<"\n";
}
}
return 0;
}