Codeforces Round 835 (Div. 4) D. Challenging Valleys
链接: https://codeforces.com/contest/1760/problem/D
题目介绍:
思路:
题目要求只能有一个 “ 谷 ” ,那么数组只能由三种可能,先递减后递增,或者一直递增,或者一直递减 ,如果出现其他情况,说明就会产生多个“谷”。
而且:
注意,如果数组一直递增,那么就不能有别的变化,如果先递增再递减或者先递减再递增再递减,都会出现两个“谷”,所以满足题意的只能有刚才所说的三种情况,概括的讲,只要保证它增加之后不能有减少就妥啦!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;cin>>t;
while(t--)
{
int n;cin>>n;
int a[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int flag=0,z=0;
for(int i=1;i<n;i++)
{
if(a[i]>a[i-1])///数组上升,进行标记
flag=1;
if(flag == 1 && a[i]<a[i-1]) //只要数组上升之后下降了,那么直接跳出循环输出no
{
z=1;
break;
}
}
if(z)
cout<<"NO\n";
else
cout<<"YES\n";
}
return 0;
}