HDOJ4699(对顶栈)
Posted lmjer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDOJ4699(对顶栈)相关的知识,希望对你有一定的参考价值。
#include<cstdio> #include<stack> #include<cstring> #include<algorithm> using namespace std; const int maxn=1000000; int Q1[maxn]; int Q2[maxn],r1,r2; int sum[maxn],dp[maxn]; int main(){ int n; while(scanf("%d",&n)!=EOF){ memset(Q1,0,sizeof(Q1)); memset(Q2,0,sizeof(Q2)); memset(sum,0,sizeof(sum)); memset(dp,0,sizeof(dp)); dp[0]=-(1<<29); r1=r2=0; char c; char p[10]; int num; while(n--){ scanf("%s",p); c=p[0]; if(c==‘I‘){ scanf("%d",&num); Q1[++r1]=num; sum[r1]=sum[r1-1]+num; dp[r1]=max(dp[r1-1],sum[r1]); } else if(c==‘D‘){ if(r1==0) continue; r1--; } else if(c==‘L‘){ if(r1==0) continue; Q2[++r2]=Q1[r1]; r1--; } else if(c==‘R‘){ if(r2==0) continue; num=Q2[r2--]; Q1[++r1]=num; sum[r1]=sum[r1-1]+num; dp[r1]=max(dp[r1-1],sum[r1]); } else{ scanf("%d",&num); printf("%d\n",dp[num]); } } } return 0; }
以上是关于HDOJ4699(对顶栈)的主要内容,如果未能解决你的问题,请参考以下文章