codechef AUG17 T1 Chef and Rainbow Array

Posted 友人A

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codechef AUG17 T1 Chef and Rainbow Array相关的知识,希望对你有一定的参考价值。

Chef and Rainbow Array Problem Code: RAINBOWA  

Chef likes all arrays equally. But he likes some arrays more equally than others. In particular, he loves Rainbow Arrays.

An array is Rainbow if it has the following structure:

  • First a1 elements equal 1.
  • Next a2 elements equal 2.
  • Next a3 elements equal 3.
  • Next a4 elements equal 4.
  • Next a5 elements equal 5.
  • Next a6 elements equal 6.
  • Next a7 elements equal 7.
  • Next a6 elements equal 6.
  • Next a5 elements equal 5.
  • Next a4 elements equal 4.
  • Next a3 elements equal 3.
  • Next a2 elements equal 2.
  • Next a1 elements equal 1.
  • ai can be any non-zero positive integer.
  • There are no other elements in array.

Help Chef in finding out if the given array is a Rainbow Array or not.

Input

  • The first line of the input contains an integer T denoting the number of test cases.
  • The first line of each test case contains an integer N, denoting the number of elements in the given array.
  • The second line contains N space-separated integers A1, A2, ..., AN denoting the elements of array.

Output

  • For each test case, output a line containing "yes" or "no" (without quotes) corresponding to the case if the array is rainbow array or not.

Constraints

  • 1 ≤ T ≤ 100
  • 7 ≤ N ≤ 100
  • 1 ≤ Ai ≤ 10

Subtasks

  • Subtask 1 (100 points) : Original constraints

Example

Input
3
19
1 2 3 4 4 5 6 6 6 7 6 6 6 5 4 4 3 2 1
14
1 2 3 4 5 6 7 6 5 4 3 2 1 1
13
1 2 3 4 5 6 8 6 5 4 3 2 1

Output
yes
no
no

Explanation

The first example satisfies all the conditions.

The second example has 1 element of value 1 at the beginning and 2 elements of value 1 at the end.

The third one has no elements with value 7 after elements with value 6.

————————————————————————————————————————

cc暂时没给中文翻译 所以只好搬英文辣

不然我简述一下题意吧

就是要判断一个序列是否只出现并且都出现了1-7

还要求是个回文串并且只有一个峰(也就是单峰)

技术分享
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int read(){
    int ans=0,f=1,c=getchar();
    while(c<0||c>9){if(c==-) f=-1; c=getchar();}
    while(c>=0&&c<=9){ans=ans*10+(c-0); c=getchar();}
    return ans*f;
}
int T,n,s[257],c[257];
int main()
{
    T=read();
    while(T--){
        bool f=false;
        memset(c,0,sizeof(c));
        n=read(); 
        for(int i=1;i<=n;i++){
            s[i]=read();
            if(s[i]>7||s[i]<1) f=1;
            else c[s[i]]=1;
        }
        for(int i=1;i<=7;i++) if(!c[i]) f=1;
        if(f){printf("no\n"); continue;}
        int cnt=(n+1)/2;
        s[0]=-inf; s[n+1]=-inf;
        for(int i=1,j=n;i<=cnt;i++,j--) 
            if(s[i]!=s[j]||s[i]<s[i-1]||s[j]<s[j+1]){
                printf("no\n"); 
                f=1;
                break;
            }
        if(!f) printf("yes\n");
    }
    return 0;
}
View Code

 


以上是关于codechef AUG17 T1 Chef and Rainbow Array的主要内容,如果未能解决你的问题,请参考以下文章

codechef AUG17 T5 Chef And Fibonacci Array

codechef AUG17 T3 Greedy Candidates

[bzoj3514][CodeChef GERALD07] Chef ans Graph Queries [LCT+主席树]

codechef Chef at the River

codechef AUG17 T4 Palindromic Game

CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And his Cake