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(对顶栈)的主要内容,如果未能解决你的问题,请参考以下文章

HDU 4699 - Editor - [对顶栈]

HDU - 4699 对顶栈

算法竞赛进阶指南第二章--题解

栈专题练习

AcWing 128. 编辑器 模拟栈+对顶栈

对顶栈