AcWing 128. 编辑器 模拟栈+对顶栈
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 128. 编辑器 模拟栈+对顶栈相关的知识,希望对你有一定的参考价值。
主要是记录一下对顶栈的思想:分成两部分,两部分会相互push和pop;
题
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
#define pb push_back
#define fi first
#define se second
#define mem(a,x) memset(a,x,sizeof(a));
#define db double
#define fir(i,a,n) for(int i=a;i<=n;i++)
//======================
const int N=1e6+10;
stack<int>a,b;
int sum[N],f[N];//以i为结尾的最大前缀和
int main()
{
int t;cin>>t;
f[0]=-0x3f3f3f3f;//必须初始化
while(t--)
{
char ch;int x;
cin>>ch;
if(ch=='I')
{
cin>>x;
a.push(x);
sum[a.size()]=sum[a.size()-1]+a.top();//这里用个数表示第几个 参考 秦淮岸灯火阑珊
f[a.size()]=max(f[a.size()-1],sum[a.size()]);
}
else if(ch=='D')
{
if(a.size()) a.pop();
}
else if(ch=='L')
{
if(a.size())
{
b.push(a.top());a.pop();
}
}
else if(ch=='R')
{
if(b.size())
{
a.push(b.top());b.pop();
sum[a.size()]=sum[a.size()-1]+a.top();
f[a.size()]=max(f[a.size()-1],sum[a.size()]);
}
}
else
{
cin>>x;
cout<<f[x]<<endl;
}
}
return 0;
}
以上是关于AcWing 128. 编辑器 模拟栈+对顶栈的主要内容,如果未能解决你的问题,请参考以下文章