• 牛客新年AK场之模拟二维数组


    链接:https://ac.nowcoder.com/acm/contest/3800/D
    来源:牛客网

    题目描述

    Rinne 喜欢使用一种奇怪的方法背单词,现在这些单词被放在了一个 n×mn imes mn×m 的格子里。由于背单词是一个令人烦躁的事情,所以她决定每天只背同一行或者同一列的单词。她一共会背 T 次单词,为了方便巩固,她现在想知道:对于每个单词,最后一次背是什么时候呢?
    她这么可爱当然会算啦!但是她想考考你。

    输入描述:

    第一行三个整数 n,m,T。
    接下来 T 行,第 i+1 行描述第 i 天干了什么,每行的格式如下:
    `1 x`:说明她在这一天背了第 x 行的单词;
    `2 y`说明她在这一天背了第 y 列的单词。
    输入的所有量的具体意义请参考「题目描述」。

    输出描述:

    输出一个 n×m 的矩阵 a,ai,ai,j 表示第 i 行第 j 列这个单词最后一次被背诵是在第几天。(注意是最后一次背诵在第几天)
    示例1

    输入

    复制
    3 3 3
    1 2
    2 3
    1 3

    输出

    复制
    0 0 2
    1 1 2
    3 3 3

    备注:n×m1e5,T1e5

    解题思路:用两个一维数组来模拟二维数组

    AC代码

    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
    typedef unsigned long long ll;
    const int maxn = 1e6+10;
    int a[maxn],b[maxn];
    int main()
    {
        int n,m,t;
        cin>>n>>m>>t;
        int z,x;
        for(int i=1;i<=t;i++){
            cin>>z>>x;
            if(z==1){
                a[x-1]=i;
            }
            if(z==2){
                b[x-1]=i;
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                printf("%d ",max(a[i],b[j]));
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    深拷贝和浅拷贝
    【.NET MVC分页】.NET MVC 使用pagelist 分页
    Win10开启IIS
    Win10开启IIS
    目前问题:plupload上传带参数到后台
    目前问题:plupload上传带参数到后台
    jquery怎样获取html页面中的data-xxx
    .Net MVC删除图片
    .Net MVC删除图片
    AlloyClip的简单使用
  • 原文地址:https://www.cnblogs.com/lipu123/p/12142728.html
Copyright © 2020-2023  润新知