swjtuoj 2381 Matrix

来源:互联网 发布:外卖电话软件 编辑:程序博客网 时间:2024/06/05 20:47

题目链接:Matrix

题目大意:给你一个矩阵,刚开始里面的数全部是零,然后有两种操作,操作1表示将某行全部变为某个数,操作2表示将某列全部变为某个数,输出最后的矩阵

题目思路:直接保存一下最后的状态就好了,列和行不同,判断一下最后保存的是行还是列就好了

#include <bits/stdc++.h>#define eps 1e-6using namespace std;typedef long long ll;typedef double db;const int maxn = 5e2 + 5;const int mod = 1e9 + 7;const int INF = 1e8 + 5;const ll inf = 1e15 + 8;struct {    int tim, num;}h[maxn], l[maxn];void solve() {    int n, q;  scanf("%d%d", &n, &q);    for (int i=0; i< maxn; i++) {        h[i].tim=0;  h[i].num=0;        l[i].tim=0;  l[i].num=0;    }    for (int i=1; i<=q; i++) {        int op, k, num;  scanf("%d%d%d", &op, &k, &num);        if (op==1) {            h[k].tim=i;            h[k].num=num;        }        if (op==2) {            l[k].tim=i;            l[k].num=num;        }    }    for (int i=1; i<= n; i++) {        for (int j=1; j<= n; j++) {            if (j!=1)  printf(" ");            if (l[j].tim>h[i].tim) {                printf("%d", l[j].num);            }            else {                printf("%d", h[i].num);            }        }        printf("\n");    }}int main(){   // freopen("in.txt", "r", stdin);    int t = 1;    cin >> t;    while (t--) {        solve();    }    return 0;}