题意:传送门
题解:一共有五种操作,一直是在光标处操作,使用对顶栈进行维护,然后维护前缀和可以稍微使用
d
p
dp
dp转移下。
c
o
d
e
:
code:
code:
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,x,stkl[N],stkr[N],tl,tr,f[N],sum[N];
void push_left(int x)
{
stkl[++tl]=x;
sum[tl]=sum[tl-1]+x;
f[tl]=max(f[tl-1],sum[tl]);
}
int main()
{
while(scanf("%d",&n)==1){
f[0]=INT_MIN;tl=tr=0;
for(int i=0;i<n;i++){
char s[2];
scanf("%s",s);
if(*s=='I'){
scanf("%d",&x);
push_left(x);
}else if(*s=='L'){
if(tl>0)stkr[++tr]=stkl[tl--];
}else if(*s=='R'){
if(tr>0)push_left(stkr[tr--]);
}else if(*s=='D'){
if(tl>0)tl--;
}else{
scanf("%d",&x);
printf("%d\n",f[x]);
}
}
}
return 0;
}