zoukankan      html  css  js  c++  java
  • C

    题目链接

    题意在一个矩阵中,询问l~r行是否有一列满足mp[i][j]>=mp[i-1][j](i属于l~r)即非递减序列,是输出Yes,否输出No

    用vector<vector<int> >储存矩阵mp

    dp[i][j]表示在j列从i行往上推dp[i][j]行满足非递减,即在j列行i-dp[i][j]到行i满足非递减序列,同样用vector<vector<int> >储存

    mx[i]表示在所有列中i-mx[i]最小的,即在所有列中在满足非递减的情况下从i行倒推的行数最多

    所以但满足mx[r]>=r-l+1,证明至少有一列满足情况。

    代码实现:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<vector>
     5 #include<algorithm>
     6 using namespace std;
     7 vector<vector<int> >mp;
     8 vector<vector<int> >dp;
     9 vector<int>mx;
    10 int main()
    11 {
    12     int i,j,k,n,m,q,l,r;
    13     while(~scanf("%d%d",&n,&m))
    14     {
    15         mp.resize(n+2);dp.resize(n+2);mx.resize(n+2);
    16         for(i=0;i<n+2;i++)
    17         {
    18             mp[i].resize(m+2);
    19             dp[i].resize(m+2);
    20         }
    21         for(i=1;i<=n;i++)
    22         for(j=1;j<=m;j++)
    23         {
    24             scanf("%d",&mp[i][j]);
    25         }
    26         for(i=1;i<=n;i++)
    27         mx[i]=0;
    28         for(i=1;i<=m;i++)
    29         dp[1][i]=1;
    30         for(i=2;i<=n;i++)
    31         for(j=1;j<=m;j++)
    32         {
    33             if(mp[i][j]>=mp[i-1][j])dp[i][j]=dp[i-1][j]+1;
    34             else
    35             dp[i][j]=1;
    36         }
    37         for(i=1;i<=n;i++)
    38         for(j=1;j<=m;j++)
    39         mx[i]=max(mx[i],dp[i][j]);//i-mx[i]~i是非递减的
    40         scanf("%d",&q);
    41         while(q--)
    42         {
    43             scanf("%d%d",&l,&r);
    44             if(mx[r]>=r-l+1)printf("Yes
    ");
    45             else
    46             printf("No
    ");
    47         }
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    k8s之docker被屏蔽后下载方法
    代码合并工具Beyond Compare的使用技巧
    (转)设计模式——观察者模式
    notepad问题汇总
    个人构建问题
    内部git常用总结
    (转)动态规划算法—买卖股票的最佳时机系列
    (转)java中引用传递和值传递
    互联网面试题
    (转)UML类图与类的关系详解
  • 原文地址:https://www.cnblogs.com/WHLdbk/p/6441650.html
Copyright © 2011-2022 走看看