codeforces 777 C

n*m的一个表

k个查询查询 l 行到 r  行 是否某一列是不递减的

有yes

否组no

显然不能暴力 维护一个到 这一行最大的不递减的  行数

如何维护呢   显然n*m是需要的  然后维护这一列能不能走下去 然后更新一下这个  行数

最后查询的时候    l r   和 这个对应的行数  比一下

#include <iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>

using namespace std ;

#define LL long long
#define MAXN 1010

int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    int num[n+9][m+9],jud[n+9],cnt[n+9][m+9];
    for(int i=1;i<=n;i++)
    {
        jud[i]=1;
        for(int j=1;j<=m;j++)
        {
            scanf("%d",&num[i][j]);
            cnt[1][j]=1;
        }
    }
    for(int i = 2; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            if(num[i][j]>=num[i-1][j])
                cnt[i][j]=1+cnt[i-1][j];
            else
                cnt[i][j]=1;
            jud[i]=max(jud[i],cnt[i][j]);
        }
    }
    int k;
    scanf("%d",&k);
    while(k--)
    {
        int l,r;
        scanf("%d%d",&l,&r);
        if(jud[r]>=r-l+1)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}
时间: 2024-10-14 12:19:08

codeforces 777 C的相关文章

codeforces 777 A

三个盖子 其中里面有一个下面有求 一个人移来移去 奇数次 0 1 换 偶数次 1 2 换 给你最后的位子移动的次数 问开始的位子 显然这个题有循环结      6 然后暴力一下 #include <iostream> #include<string.h> #include<stdio.h> using namespace std ; #define LL long long int z[3]; int main() { int n,x; scanf("%d%d

codeforces 777 B

有2个人 a b 给你2串数子的长度 每个人每一轮出一个数  a顺序 b可以任意 然后求 b至少输掉几盘 a最多输掉几盘 显然要先统计一下数字 然后针对着来 1 求B能赢的和平局的  0 - 9模拟  取a中相对小的    然后计数 2 b尽量赢 去掉a相对大的  输出即可 #include <iostream> #include<string.h> #include<stdio.h> #include<algorithm> using namespace

7月好题记录

Codeforces 1063 B. Labyrinth [确定性]给出一个迷宫\((1 \leq n,m \leq 2000)\),求从起点到各个点,能够做到在左移动次数不超过\(x\)次,右移动次数不超过\(y\)次的情况下到达的点的个数. 显然贪心地要求到达每个点时左右移动次数越少越好,但是两个关键字很难维护.而事实上,起点终点确定时,左移动次数确定时右移动次数一定确定.当终点在起点左侧时,最小化左移动次数即可:当终点在起点右侧时,依然最小化左移动次数即可.当然两者都最小化右移动次数也可以

Codeforces 777A Shell Game

A. Shell Game time limit per test:0.5 seconds memory limit per test:256 megabytes input:standard input output:standard output Bomboslav likes to look out of the window in his room and watch lads outside playing famous shell game. The game is played b

Codeforces 777D:Cloud of Hashtags(水题)

http://codeforces.com/problemset/problem/777/D 题意:给出n道字符串,删除最少的字符使得s[i] <= s[i+1]. 思路:感觉比C水好多啊,大概是题目比较难看懂吧.直接从后面往前扫,用后面的答案更新前面的答案.考虑如果后面的字符串比前面的大,那么直接保存当前的字符串,否则暴力扫一遍,前面的字符串大于后面的字符串的那一位直接跳出. 1 #include <bits/stdc++.h> 2 using namespace std; 3 str

codeforces水题100道 第十二题 Codeforces Beta Round #91 (Div. 2 Only) A. Lucky Division (brute force)

题目链接:http://www.codeforces.com/problemset/problem/122/A题意:判断一个数是否能被一个lucky number整除,一个lucky number是一个只包含4或7的数.C++代码: #include <cstdio> int lucky[14] = {4, 7, 44, 47, 74, 77, 444, 447, 474, 477, 744, 747, 774, 777}; bool check(int x) { for (int i = 0

CodeForces E. Lucky Array 幸运数列

CodeForces    E. Lucky Array  幸运数列 Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits 4 and 7. For example, numbers 47, 744, 4 are lucky and 5, 17, 467 are n

codeforces#536题解

CodeForces#536 A. Lunar New Year and Cross Counting Description: Lunar New Year is approaching, and you bought a matrix with lots of "crosses". This matrix \(M\) of size \(n \times n\) contains only 'X' and '.' (without quotes). The element in t

Codeforces Round #558 (Div. 2)-Cat Party (Hard Edition)-(前缀和 + 模拟)

http://codeforces.com/problemset/problem/1163/B2 题意:有n天,每天有一个颜色,截取前x天,随便抽掉一天,使剩下的各个颜色出现的次数相等. 解题,也可以解决B1: 有三种情况: 1.一种颜色出项一次,其他相等,抽掉出现1次颜色的那一天,例如13天分别是 6 222 333 444 555 2.只有两种颜色次数,次数相差1,并且最大出现次数的颜色只有1次,例如13天分别是 777 333 222 8888 3.所有颜色都只出现过1次,例如 1 2 3