存储构造题(Print Check)

连接:Print Check

题意:n行m列的矩阵,有k次涂色,每一涂一行或者一列,求最后的涂色结果。

从数据的大小看,暴力肯定要TLE;

问题是如何存储数据。

首先:我们只要最后的涂色结果。

其次:没有必要用for每个数据涂一遍。

所以如果能一次直接涂一行就可以了;

#include <iostream>
#include <cstdio>
uising namespace std;
#define N 5005
const int M = 1e9 +7;
typedef long long LL;
int row[N],col[N];
int rt[N],ct[N];
int main(){
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int n,m,k,x,a,rc;
    cin>>n>>m>>k;
    for(int i = 1; i <= k; i++){
        scanf("%d%d%d",&rc,&x,&a);
        if(rc == 1){
            row[x] = a;rt[x] = i;
        }
        else {
            col[x] = a;ct[x] = i;
        }
    }
    for(int i = 1;i <= n; i++){
        for(int j = 1;j <= m;j++){
            printf("%d ",rt[i] < ct[j]?col[j]:row[i]);
        }
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/yoyo-sincerely/p/5253283.html