HDU - 4699 对顶栈
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 对顶栈的更多相关文章
- 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 ... 
- HDU 4699 - Editor - [对顶栈]
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699 Problem Description Sample Input8I 2I -1I 1Q 3LD ... 
- HDU 4699 Editor(模拟 对顶栈)
		题目大意: 给定一个整数序列 维护5种操作 次数<1e6 I x: 光标位置插入x 然后光标位于x之后 D: 删除光标前一个数 L: 光标左移 R: 光标右移 Q k: 询问位置k之前的最大前缀 ... 
- [置顶] hdu 4699 2个栈维护 or 伸展树
		hdu 4699 Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 注意这里的k是在光标之前的, ... 
- Codeforces 670E - Correct Bracket Sequence Editor - [对顶栈]
		题目链接:https://codeforces.com/contest/670/problem/E 题意: 给出一个已经匹配的括号串,给出起始的光标位置(光标总是指向某个括号). 有如下操作: 1.往 ... 
- hdu 4699 Editor 模拟栈
		思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ... 
- HDU 4699 Editor 维护栈
		维护两个栈,分别存光标前和光标后的数 再维护前缀和的栈 和 前缀和最大值的栈 注意一下左移,右移,删除到顶了就不操作了 5个操作 I x : 光标处插入x -----> s1.push(x) ... 
- HDOJ 4699 Editor   对顶栈模拟
		Editor Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Subm ... 
- 【HDU 4699】 Editor
		[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ... 
随机推荐
- 720. Longest Word in Dictionary 能连续拼接出来的最长单词
			[抄题]: Given a list of strings words representing an English Dictionary, find the longest word in wor ... 
- C#实现访问网络共享文件夹
			C#实现访问网络共享文件夹,使用 WNetAddConnection2A 和 WNetCancelConnection2A. 在目标服务器建立共享文件夹,建立访问账号test; public enum ... 
- openpyxl模块处理excel文件
			python模块之——openpyxl 处理xlsx/ xlsm文件 项目原因需要编辑excel文件,经过查询,最先尝试xlwt .wlrd这个两个模块,但是很快发现这两个模块只能编辑xls文件,然而 ... 
- 使用Cytoscape画PPI网络图
			打开Cytoscape软件,根据菜单导入string_interactions.tsv文件 File ----> Import ----> Network from File 会弹出下图对 ... 
- 15.select into
			select into SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中. SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档. CREATE TABLE ... 
- 黑盒测试实践--Day2 11.26
			黑盒测试实践--Day2 今天完成任务情况: 大家自主安装和学习Selenium软件 小尹给大家介绍学生信息管理系统的基本情况,有余力者搭建了相关环境 周末,休息 附录 小组基本情况介绍 人数:五人 ... 
- DataAnnotationsModelValidator-基于数据注解方式的model验证器
			http://www.cnblogs.com/artech/archive/2012/04/10/how-mvc-works.html http://www.cnblogs.com/artech/ar ... 
- UVa 10245 The Closest Pair Problem (分治)
			题意:给定 n 个点,求最近两个点的距离. 析:直接求肯定要超时的,利用分治法,先把点分成两大类,答案要么在左边,要么在右边,要么一个点在左边一个点在右边,然后在左边或右边的好求,那么对于一个在左边一 ... 
- c# .NET开发邮件发送功能的全面教程(含邮件组件源码)
			http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html 
- Windows Server 2003 asp网页不能访问的常见问题
			1. [开始]--[程序]--[管理工具]--[Internet信息服务管理器],在服务器名下的“web服务扩展”的右窗口,单击active server pages -> 单击[允许].2. ... 
