zoukankan      html  css  js  c++  java
  • 牛客小白月赛11 C Rinne Loves Study

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

    题目描述

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

    输入描述:

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

    输出描述:

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

    输入

    复制
    3 3 3
    1 2
    2 3
    1 3

    输出

    复制
    0 0 2
    1 1 2
    3 3 3

    备注:

    n×m105,T105
    这个题当时傻逼了,直接就去莽了。t到自闭,后来发现不对劲
    才想到了正确解法

    开1e5*1e5会爆内存(全局不一定),而且会t,需要点四维转换,

    可以开两个数组a,b,a[i]表示第i行的背的第几天,

    b[i]表示第i列的背的第几天,

    因为会覆盖,天数越大越优先,所以最后要求的i行j列的背的最后天数为max(a[i],b[j])

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+10;
    int a[maxn],b[maxn];
    int main()
    {
        int n,m,t;
        int i,j;
        int k,l;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        cin>>n>>m>>t;
        for(i=1; i<=t; i++)
        {
            cin>>k>>l;
            if(k==1)a[l-1]=i;
            else b[l-1]=i;
        }
        for(i=0; i<n; i++)
        {
            for(j=0; j<m; j++)
            {
                cout<<max(a[i],b[j])<<" ";
            }
            cout<<endl;
        }
        return 0;
    }
     
  • 相关阅读:
    android apk瘦身之 图片压缩 tinypng
    java 1.7 新io 实践 NIO2
    Still unable to dial persistent://blog.csdn.net:80 after 3 attempts
    dex2oat 加载多次
    android stadio open recent 在同一窗口打开
    &运算符的应用
    MethodTrace 生成的trace文件为空
    MethodTrace 生成的trace文件为空
    error: unknown host service 的详细解决办法
    error: unknown host service 的详细解决办法
  • 原文地址:https://www.cnblogs.com/tp25959/p/10359285.html
Copyright © 2011-2022 走看看