JZOJ 3789. 【NOI2015模拟8.20】编辑器
2018-02-03 22:20
387 查看
Description
你正在设计一种新型的编辑器,这种编辑器可以高效地处理整数序列。编辑器启动时,序列为空,光标指向序列的头部。编辑器支持下列 5 种操作:
1. I x 把整数 x 插入到光标位置;
2. D 删除光标之前的整数(保证光标不在序列的头部);
3. L 如果光标不在序列的头部,向左移动一个位置,否则不移动;
4. R 如果光标不在序列的尾部,向右移动一个位置,否则不移动;
5. Q k 假设光标之前的序列是 {a1, a2, … , an},求 S1, S2, … , Sk 的最大值(其中 Si = a1 +a2 +· · ·+ai )。保证 k ≤ n。
Input
第 1 行,1 个整数 Q,表示操作的数量。接下来 Q 行,每行描述一个操作。
Output
对于每个操作 Q,输出对应的最大值。Sample Input
8I 2
I -1
I 1
Q 3
L
D
R
Q 2
Sample Output
23
Data Constraint
• 对于 30% 的数据,Q ≤ 1000;• 对于 60% 的数据,Q ≤ 10^5;
• 对于 100% 的数据,1 ≤ Q ≤ 10^6, |x| ≤ 1000。
Solution
用两个栈分别维护光标两边的数,如光标右移就将右边的栈顶元素弹出再加入左边的栈顶。记得判断栈为空则不弹栈(光标到边界了)。
然后维护左边栈的前缀和 和 前缀和的最大值,移光标时修改即可。
这样就可以做到线性复杂度 O(Q) 。
Code
#include<cstdio> #include<cctype> using namespace std; const int N=1e6+5; int n1,n2,sum; int a ,b ,ans ; inline int read() { int X=0,w=0; char ch=0; while(!isdigit(ch)) w|=ch=='-',ch=getchar(); while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X; } inline void write(int x) { if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0'); } inline void change(int x) { sum+=a[++n1]=x; ans[n1]=ans[n1-1]>sum?ans[n1-1]:sum; } int main() { int q=read(); ans[0]=-1e9; while(q--) { char ch=getchar(); while(ch^'I' && ch^'Q' && ch^'L' && ch^'R' && ch^'D') ch=getchar(); if(ch=='I') change(read()); else if(ch=='Q') write(ans[read()]),putchar('\n'); else if(ch=='L') { if(n1) sum-=a[n1],b[++n2]=a[n1--]; }else if(ch=='R') { if(n2) change(b[n2--]); }else sum-=a[n1--]; } return 0; }
相关文章推荐
- JZOJ3789. 【NOI2015模拟8.20】编辑器
- 【NOI2015模拟8.20】编辑器 jzoj 3789 栈+神奇操作
- 【NOI2015模拟8.20】编辑器
- 【JZOJ3962】【NOI2015模拟12.27】str(回文自动机)
- JZOJ 3786. 【NOI2015模拟8.19】图
- 【JZOJ 3976】【NOI2015模拟1.17】⑨
- 【JZOJ3834】【NOI2015模拟9.14】【CF461D】Complicated Task(异或方程组+并查集)
- jzoj3819 [NOI2015模拟9.9]取石子
- JZOJ3975. 【NOI2015模拟1.17】串
- Jzoj3769【NOI2015模拟8.14】A+B
- JZOJ3777. 【NOI2015模拟8.17】最短路(shortest)
- 【jzoj3771】【NOI2015模拟8.15】【小 Z 的烦恼】
- JZOJ3786. 【NOI2015模拟8.19】图
- 【jzoj3773】【NOI2015模拟8.15】【小 P 的烦恼】【动态规划】
- JZOJ.3769【NOI2015模拟8.14】A+B
- 【JZOJ 3769】【NOI2015模拟8.14】A+B
- JZOJ 3769. 【NOI2015模拟8.14】A+B
- 【JZOJ3771】【NOI2015模拟8.15】小 Z 的烦恼
- 【JZOJ3973】【NOI2015模拟1.10】【NOI2013湖南省队集训】黑白树(wbtree)(并查集)
- JZOJ 3819. 【NOI2015模拟9.9】取石子