| 比赛 |
2026.9.12 |
评测结果 |
AAAATTTTTT |
| 题目名称 |
彩色卡牌 |
最终得分 |
40 |
| 用户昵称 |
yanglich |
运行时间 |
29.876 s |
| 代码语言 |
C++ |
内存使用 |
5.63 MiB |
| 提交时间 |
2026-09-12 11:48:29 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int r,c,q,a[505][505],b[505][505];
int cx[4]={1,-1,0,0},cy[4]={0,0,1,-1};
bool vis[505][505],col[300005];
int z;
int bfs(int d,int e){
memset(vis,0,sizeof(vis));
memset(col,0,sizeof(col));
if(z<a[d][e])return 0;
queue<pair<int,int> >qu;
qu.push(make_pair(d,e));
vis[d][e]=1;
col[b[d][e]]=1;
int ans=1;
while(!qu.empty()){
int x=qu.front().first,y=qu.front().second;
//cout<<x<<' '<<y<<"\n";
qu.pop();
for(int i=0;i<4;i++){
int xx=x+cx[i],yy=y+cy[i];
if(xx<=0||xx>r||yy<=0||yy>c)continue;
if(vis[xx][yy])continue;
if(z>=a[xx][yy]){
vis[xx][yy]=1;
if(!col[b[xx][yy]]){
ans++;
col[b[xx][yy]]=1;
}
qu.push(make_pair(xx,yy));
}
}
}
return ans;
}
int main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>r>>c>>q;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
cin>>b[i][j];
}
}
while(q--){
int op,x,y,p;
cin>>op>>x>>y>>p;
if(op==1){
b[x][y]=p;
}
else{
z=p;
cout<<bfs(x,y)<<"\n";
}
}
return 0;
}