刷题总结——art2(ssoj)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题总结——art2(ssoj)相关的知识,希望对你有一定的参考价值。
题目:
题解:
o(n)复杂度扫一遍再用一个stack维护就可以了·····mdzz这道题都不会做··
代码:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<ctime> #include<cctype> #include<string> #include<cstring> #include<algorithm> using namespace std; const int N=1e5+5; int n,num[N],Left[N],Right[N],deep,stack[N],ans; int main() { //freopen("art2.in","r",stdin); // freopen("art2.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) Left[i]=1e+8; for(int i=1;i<=n;i++) { scanf("%d",&num[i]); Left[num[i]]=min(Left[num[i]],i); Right[num[i]]=max(Right[num[i]],i); } for(int i=1;i<=n;i++) { if(!num[i]) continue; if(Left[num[i]]==i) { stack[++deep]=num[i]; ans=max(deep,ans); } if(Right[num[i]]==i) { if(stack[deep]!=num[i]) { cout<<"-1"<<endl; return 0; } else deep--; } } cout<<ans<<endl; return 0; }
以上是关于刷题总结——art2(ssoj)的主要内容,如果未能解决你的问题,请参考以下文章