比赛 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;
}