| 比赛 |
2026.9.12 |
评测结果 |
AAAATTTTTT |
| 题目名称 |
彩色卡牌 |
最终得分 |
40 |
| 用户昵称 |
Lixj |
运行时间 |
26.035 s |
| 代码语言 |
C++ |
内存使用 |
5.31 MiB |
| 提交时间 |
2026-09-12 12:41:37 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int r,q,c;
int dx[5]={-1,1,0,0};
int dy[5]={0,0,-1,1};
int main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
cin>>r>>c>>q;
vector<vector<int>> a(r,vector<int>(c));
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
cin>>a[i][j];
vector<vector<int>> b(r,vector<int>(c));
for(int i=0;i<r;i++)
for(int j=0;j<c;j++)
cin>>b[i][j];
while(q--){
int op,x,y,z;
cin>>op>>x>>y>>z;
if(op==1){
--x;--y;
b[x][y]=z;
}
else{
--x;--y;
if(a[x][y]>z){
cout<<0<<endl;
continue;
}
vector<vector<bool>> vis(r,vector<bool>(c,false));
queue<pair<int,int>> qq;
qq.push({x,y});
vis[x][y]=1;
set<int> color;
while(!qq.empty()){
auto [ux,uy]=qq.front();
qq.pop();
color.insert(b[ux][uy]);
for(int d=0;d<4;d++){
int nx=ux+dx[d],ny=uy+dy[d];
if(nx>=0&&nx<r&&ny>=0&&ny<c&&!vis[nx][ny]&&a[nx][ny]<=z){
vis[nx][ny]=1;
qq.push({nx,ny});
}
}
}
cout<<color.size()<<endl;
}
}
return 0;
}