2023春测T1-Solution

· · 题解

容易发现,位于 (x_i,y_i) 的格子的颜色只取决于 x_i 行与 y_i 列的颜色。

这时候可以想到开两个数组,分别存储列与行的绘画信息,然后发现前后的互相覆盖可以通过存储绘画顺序来得出。

于是开一个结构体,存储绘画信息,成员有:

  1. color

  2. priority

然后就可以在输出的时候反推回来,时间复杂度 O(nm),可以通过本题。具体实现:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

struct paint{ //绘画信息,col=列,row=行
    ll color, priority;
}col[100010], row[100010];

ll n,m,q;

int main(){
    int T;
    scanf("%d", &T);
    while(T--){
        memset(col,0,sizeof(col)); // 多测不清空,亲人两行泪
        memset(row,0,sizeof(row));
        scanf("%lld%lld%lld",&n,&m,&q);
        for(int i=1;i<=q;i++){
            ll opt,x,c;
            scanf("%lld%lld%lld",&opt,&x,&c);
            if(opt==0){
                row[x].color=c;
                row[x].priority=i;
            }
            else {
                col[x].color=c;
                col[x].priority=i;
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                if(row[i].priority>col[j].priority){
                    printf("%lld ", row[i].color);
                }
                else {
                    printf("%lld ", col[j].color);
                }
            }
            printf("\n");
        }
    }
    return 0;
}

// @nullptr_qwq & @wanhao326 祝大家AK春测!