zoukankan      html  css  js  c++  java
  • Codeforces Round #616 (Div. 2) B. Array Sharpening

    t题目链接:http://codeforces.com/contest/1291/problem/B

    思路:

    用极端的情况去考虑问题,会变得很简单。

    无论是单调递增,单调递减,或者中间高两边低的情况都可以变为三种模型。

    (1)0,1,2,3,4........n-3,n-2,n-1

    (2)n-1,n-2,n-3.....3,2,1,0

    (3)0,1,2,3,4,.....n.......4,3,2,1,0

    那么,我们只需要查看当前位置是否大于等于极端模型(3)在这个位置的数值,如果当前位置不满足了,

    那么我们就让当前位置和之后的数值去和极端模型(3)n后面递减的数值去比较,如果还有不满足的情况说明就是“NO”了。

    注意一种情况 0 1 1 0需要特殊处理一下。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 const int N = (int)3e5+100;
     5 int a[N];
     6 
     7 int main(){
     8 
     9     int T,n;
    10     while(cin >> T){
    11         while(T--){
    12             cin >> n;
    13             for(int i = 1; i <= n; ++i) cin >> a[i];
    14             int i;
    15             bool ok = 1;
    16             //递增区间判断
    17             for(i = 1; i <= n; ++i){
    18                 if(a[i] >= i-1) continue;
    19                 break;
    20             }
    21             // 0 1 1 0 这种情况判定
    22             if(i <= n){
    23                 if(a[i] == a[i-1] && !(a[i] >= n-i+1)) ok = 0;
    24             }
    25             //递减区间判定
    26             for(; i <= n; ++i){
    27                 if(a[i] >= n-i) continue;
    28                 ok = 0; break;
    29             }
    30             //if(ok) cout << "----------Yes" << endl;
    31             //else cout << "----------No" << endl;
    32             if(ok) cout << "----------Yes" << endl;
    33             else cout << "----------No" << endl;
    34         }
    35     }
    36 
    37 }
  • 相关阅读:
    C/C++之指针
    mysql--sql语言之DDL,DML
    mysql--之在Windows上的安装
    mysql--之mysql在linux上的安装
    动态资源和静态资源
    Tomcat文件夹和server配置文件解析
    和 的区别
    个数可变形参
    Java方法里参数的传递机制
    8中基本数据类型
  • 原文地址:https://www.cnblogs.com/SSummerZzz/p/12259745.html
Copyright © 2011-2022 走看看