Codeforces Round #527 (Div. 3)D2(栈,思维)
Posted ldudxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #527 (Div. 3)D2(栈,思维)相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
using namespace std;
int a[200007];
stack<int>s;
int main(){
int n;
int mn=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]>mn)
mn=a[i];
}
s.push(a[1]);
int x=0;
for(int i=2;i<=n;i++){
if(!s.empty()){
x=s.top();
if(a[i]==x)
s.pop();
else{
if(a[i]>x){
printf("NO");
return 0;
}
s.push(a[i]);
}
}
else
s.push(a[i]);
}
int y=s.size();
if(y<=1){
if(y==1&&s.top()!=mn)//如果栈内剩下的是最大的元素,它无需与其它元素一同++,非最大是无法和其他一起++的,缺少该判断惨遭hack
printf("NO");
else
printf("YES");
}
else
printf("NO");
return 0;
}
//类似括号匹配
以上是关于Codeforces Round #527 (Div. 3)D2(栈,思维)的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces Round #527 (Div3) C. Prefixes and Suffixes
cf codeforces round#527F. Tree with Maximum Cost树形dp
Codeforces Round #527 (Div. 3) 总结 A B C D1 D2 F
Codeforces Round #436 E. Fire(背包dp+输出路径)