zoukankan      html  css  js  c++  java
  • Codeforces 777C Alyona and Spreadsheet

    C. Alyona and Spreadsheet
    time limit per test:1 second
    memory limit per test:256 megabytes
    input:standard input
    output:standard output

    During the lesson small girl Alyona works with one famous spreadsheet computer program and learns how to edit tables.

    Now she has a table filled with integers. The table consists of n rows and m columns. By ai, j we will denote the integer located at the i-th row and the j-th column. We say that the table is sorted in non-decreasing order in the column j if ai, j ≤ ai + 1, j for all i from 1 to n - 1.

    Teacher gave Alyona k tasks. For each of the tasks two integers l and r are given and Alyona has to answer the following question: if one keeps the rows from l to r inclusive and deletes all others, will the table be sorted in non-decreasing order in at least one column? Formally, does there exist such j that ai, j ≤ ai + 1, j for all i from l to r - 1 inclusive.

    Alyona is too small to deal with this task and asks you to help!

    Input

    The first line of the input contains two positive integers n and m (1 ≤ n·m ≤ 100 000) — the number of rows and the number of columns in the table respectively. Note that your are given a constraint that bound the product of these two integers, i.e. the number of elements in the table.

    Each of the following n lines contains m integers. The j-th integers in the i of these lines stands for ai, j (1 ≤ ai, j ≤ 109).

    The next line of the input contains an integer k (1 ≤ k ≤ 100 000) — the number of task that teacher gave to Alyona.

    The i-th of the next k lines contains two integers li and ri (1 ≤ li ≤ ri ≤ n).

    Output

    Print "Yes" to the i-th line of the output if the table consisting of rows from li to ri inclusive is sorted in non-decreasing order in at least one column. Otherwise, print "No".

    Example
    Input
    5 4
    
    
    1 2 3 5
    3 1 3 2
    4 5 2 3
    5 5 3 2
    4 4 3 4
    6
    1 1
    2 5
    4 5
    3 5
    1 3
    1 5
    Output
    Yes
    
    
    No
    Yes
    Yes
    Yes
    No
    Note

    In the sample, the whole table is not sorted in any column. However, rows 1–3 are sorted in column 1, while rows 4–5 are sorted in column 3.

    题目链接:http://codeforces.com/problemset/problem/777/C

    分析:

    题意:给你一个n*m的矩阵,k个询问,每个询问有l,r,让你求在l-r行里面有没有一列可以满足从上到下为非递减数列。

    解题思路:刚开始想到直接从下到上更新就好了,但是发现一个问题,n*m<=100000,那么n,m都有可能为100000,所以不能开二维数组更新,所以想到从上到下更新,然后用一个一维数组更新每行的数,用另一个一维数组更新这一行的每一列能到达的最上面的非递增数列,再用最后一个数组更新这一行能到达的最上面的非递增数列即可,然后在询问的时候就能用O(k)的时间算出答案了。

    复制代码
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define maxn 100005
     4 int main()
     5 {
     6     int a[maxn],b[maxn],c[maxn];
     7     int n,m,x;
     8     int k,l,r;
     9     scanf("%d%d",&n,&m);
    10     for(int i=1;i<=n;i++)
    11     {
    12         c[i]=i;
    13         for(int j=1;j<=m;j++)
    14         {
    15             scanf("%d",&x);
    16             if(x<a[j]) b[j]=i;
    17             a[j]=x;
    18             if(b[j]<c[i])
    19                 c[i]=b[j];
    20         }
    21     }
    22    scanf("%d",&k);
    23    while(k--)
    24    {
    25        scanf("%d%d",&l,&r);
    26        if(c[r]<=l)
    27         printf("Yes
    ");
    28        else printf("No
    ");
    29    }
    30    return 0;
    31 }
    复制代码
  • 相关阅读:
    Java实现蓝桥杯七对数字
    Java实现蓝桥杯七对数字
    ubuntu下交叉编译windows c程序
    Linux下开发Windows平台运行的程序
    Fedora 11中用MinGW编译Windows的Qt4程序(在Linux系统下编译Windows的程序)
    C++内存问题大集合(指针问题,以及字符串拷贝问题,确实挺危险的)
    C/C++的编译器|编译环境(非常全面的比较)
    关于 js 中的 call 和 apply使用理解
    看我如何应对业务需求变化,领域模型调整?
    MVC 用扩展方法执行自定义视图,替代 UIHint
  • 原文地址:https://www.cnblogs.com/yechanglv/p/6941946.html
Copyright © 2011-2022 走看看