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; }
以上是关于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 AUG17 T4 Palindromic Game
CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And his Cake