| 比赛 |
2026.9.12 |
评测结果 |
AAAATTTTTT |
| 题目名称 |
彩色卡牌 |
最终得分 |
40 |
| 用户昵称 |
Ruyi |
运行时间 |
25.056 s |
| 代码语言 |
C++ |
内存使用 |
19.24 MiB |
| 提交时间 |
2026-09-12 10:20:17 |
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define N 501
using namespace std;
ll r,c,q,a[N][N],b[N][N],vis[N][N],op,x,y,z,ans,d[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
map<ll,bool> mp;
ll read(){
ll x=0,f=1;
char c=' ';
while(c>'9'||c<'0'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+(c-'0');
c=getchar();
}
return x*f;
}
void write(ll x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+'0');
return ;
}
void dfs(ll xx,ll yy,ll p){
if(a[xx][yy]>p) return ;
vis[xx][yy]=1;
if(!mp[b[xx][yy]]){
ans++;
mp[b[xx][yy]]=true;
}
for(int i=0;i<4;i++){
ll fx=xx+d[i][0],fy=yy+d[i][1];
if(fx>0&&fx<=r&&fy>0&&fy<=c&&!vis[fx][fy]) dfs(fx,fy,p);
}
return ;
}
int main(){
freopen("card.in","r",stdin);
freopen("card.out","w",stdout);
r=read();
c=read();
q=read();
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++) a[i][j]=read();
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++) b[i][j]=read();
while(q--){
op=read();
x=read();
y=read();
z=read();
if(op==1) b[x][y]=z;
else{
dfs(x,y,z);
write(ans);
putchar('\n');
ans=0;
mp.clear();
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++) vis[i][j]=0;
}
}
return 0;
}