Get到了全新O(1)替代部分伸展树功能的姿势

左栈stk1维护当前信息,右栈stk2维护历史删除信息

题目求的是严格的前缀和(且小于当前指针)那就每次左栈新增时再更新前缀和信息就好

即使把题面换成最大子段和也是一样搞法

要是O(1)求1到k的最大/小值?再来多一个维护历史的栈..应该可以吧

/*H E A D*/
stack<int> stk1,stk2;
ll sum[maxn],maxsum[maxn];
int main(){
int Q,op,x,k;
char str[50];
while(~iin(Q)){
while(!stk1.empty())stk1.pop();
while(!stk2.empty())stk2.pop();
memset(sum,0,sizeof sum);
memset(maxsum,0x80,sizeof maxsum);
rep(i,1,Q){
s0(str);
if(str[0]=='I'){
x=read();
stk1.push(x);
int size=stk1.size();
sum[size]=sum[size-1]+x;
maxsum[size]=max(sum[size],maxsum[size-1]);
}else if(str[0]=='D'){
stk1.pop();
}else if(str[0]=='L'){
if(stk1.empty())continue;
int t=stk1.top();
stk2.push(t);
stk1.pop();
}else if(str[0]=='R'){
if(stk2.empty())continue;
int t=stk2.top();
stk1.push(t);
stk2.pop();
int size=stk1.size();
sum[size]=sum[size-1]+t;
maxsum[size]=max(sum[size],maxsum[size-1]);
}else{
k=read();
println(maxsum[k]);
}
}
}
return 0;
}

HDU - 4699 对顶栈的更多相关文章

  1. Editor HDU - 4699 (栈)

    Problem Description   Sample Input 8 I 2 I -1 I 1 Q 3 L D R Q 2   Sample Output 2 3 Hint The followi ...

  2. HDU 4699 - Editor - [对顶栈]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699 Problem Description Sample Input8I 2I -1I 1Q 3LD ...

  3. HDU 4699 Editor(模拟 对顶栈)

    题目大意: 给定一个整数序列 维护5种操作 次数<1e6 I x: 光标位置插入x 然后光标位于x之后 D: 删除光标前一个数 L: 光标左移 R: 光标右移 Q k: 询问位置k之前的最大前缀 ...

  4. [置顶] hdu 4699 2个栈维护 or 伸展树

    hdu 4699  Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 注意这里的k是在光标之前的, ...

  5. Codeforces 670E - Correct Bracket Sequence Editor - [对顶栈]

    题目链接:https://codeforces.com/contest/670/problem/E 题意: 给出一个已经匹配的括号串,给出起始的光标位置(光标总是指向某个括号). 有如下操作: 1.往 ...

  6. hdu 4699 Editor 模拟栈

    思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ...

  7. HDU 4699 Editor 维护栈

    维护两个栈,分别存光标前和光标后的数 再维护前缀和的栈 和 前缀和最大值的栈 注意一下左移,右移,删除到顶了就不操作了 5个操作 I x : 光标处插入x  -----> s1.push(x) ...

  8. HDOJ 4699 Editor 对顶栈模拟

    Editor Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ...

  9. 【HDU 4699】 Editor

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...

随机推荐

  1. 2-chrome无法添加扩展程序

    1.更多工具->拓展程序->打开开发者模式->重启浏览器 2.将拓展程序拖入,确认安装

  2. Vue.js 安装及其环境搭建

    For me or other first studying vue.js. For Windows PC: 1.先安装node.js 安装官网最新的即可 版本应该要大于6.0版本 nodejs的官网 ...

  3. Git安装和常用命令

    Git是目前世界上最先进的分布式版本控制系统!!! Git能自动帮我们记录每次文件的改动,还可以让同事协作编辑. 接下来,简单的介绍下Git的安装和常用命令: Git安装: 1.Windows系统,进 ...

  4. 好的linux网站

    site:www.tldp.org rpm http://www.computerhope.com/unix.htm

  5. (转)Expression 表达式树学习整理

    原文地址:http://www.cnblogs.com/li-peng/p/3154381.html 整理了一下表达式树的一些东西,入门足够了 先从ConstantExpression 开始一步一步的 ...

  6. 桥梁(Bridge)模式

    桥梁(Bridge)模式:桥梁模式是一个非常有用的模式,也是比较复杂的一个模式.熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP ...

  7. Xshell显示本地数据排版错乱

    解决办法 文件 - 属性 - 终端 - 高级 - 用CR-LF接受LF(R)

  8. Java Serializable(序列化)的理解和总结

    1.序列化是干什么的?       简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object st ...

  9. android studio中使用recyclerview小白篇(四)

    经过努力,我们的recyclerview终于可以使用了,但是装配上真实的数据后,发现左边的内容太长了,如果超过一行,左边内容和右边的内容竟然重叠在一起了,好是让人心塞啊,如下图 后来发现设置左边tex ...

  10. angular学习文章

    https://www.jianshu.com/p/86c6249a2069 angular.cn https://segmentfault.com/a/1190000008754631