HDU/HDOJ 4699 Editor
对顶栈算法。
此题充分说明了cin的不中以及scanf的优越性。
我TM用cin超时了!!!换成scanf就A了!!!
#include <cstdio>
#include <cstring>
#include <iostream>
const int N = 1e6 + , INF = 0x3f3f3f3f;
inline int max(int a, int b) {
return a > b ? a : b;
} struct DZ {
int l[N], r[N], sum[N], large[N];
int tl, tr;
DZ() {
memset(l, , sizeof(l));
memset(r, , sizeof(r));
tl = tr = sum[] = ;
large[] = -INF;
}
void clear() {
tl = tr = ;
return;
}
void insert(int x) {
l[++tl] = x;
sum[tl] = sum[tl - ] + x;
large[tl] = max(large[tl - ], sum[tl]);
return;
}
void del() {
tl--;
return;
}
void left() {
if(tl) {
r[++tr] = l[tl--];
}
return;
}
void right() {
if(tr) {
insert(r[tr--]);
}
return;
}
int ask(int k) {
return large[k];
}
}dz; int main() {
int Q;
while(scanf("%d", &Q) != EOF) {
dz.clear();
for(int i = ; i <= Q; i++) {
char a[]; int x;
scanf("%s", a);
if(a[] == 'I') {
scanf("%d", &x);
dz.insert(x);
}
else if(a[] == 'D') {
dz.del();
}
else if(a[] == 'L') {
dz.left();
}
else if(a[] == 'R') {
dz.right();
}
else {
scanf("%d", &x);
printf("%d\n", dz.ask(x));
}
}
}
return ;
}
AC代码
HDU/HDOJ 4699 Editor的更多相关文章
- HDOJ 4699 Editor 栈 模拟
用两个栈模拟: Editor Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- 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 Problem Description Sample Input8I 2I -1I 1Q 3LD ...
- HDU 4699 Editor (2013多校10,1004题)
Editor Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- hdu 4699 Editor 模拟栈
思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ...
- HDU 4699 Editor(双向链表)
双向链表直接模拟. 用一个辅助数组maxSum来维护一下前k项中[1,k]的最大和. 因为光标是一格一格的移动,所以每次光标右移的时候动态更新一下即可. 时间复杂度O(n). #include < ...
- HDU 4699 Editor 维护栈
维护两个栈,分别存光标前和光标后的数 再维护前缀和的栈 和 前缀和最大值的栈 注意一下左移,右移,删除到顶了就不操作了 5个操作 I x : 光标处插入x -----> s1.push(x) ...
- HDU 4699 Editor(模拟 对顶栈)
题目大意: 给定一个整数序列 维护5种操作 次数<1e6 I x: 光标位置插入x 然后光标位于x之后 D: 删除光标前一个数 L: 光标左移 R: 光标右移 Q k: 询问位置k之前的最大前缀 ...
- HDU—4699 Editor 双向链表+子集和
惨.今天聪哥选了2013 多校10做训练,结果一题都没做出来.这个题目是数据结构,正好是我强项 如果只是插入 删除 光标左右移动,那都小菜,用链表全解决,关键是那个Q k 要求 a1到aq的连续子序列 ...
随机推荐
- Django 2.11 静态页面404 解决
在settings中配置 STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join(BASE_DIR,"static"), ...
- linux 挂载windows下目录,其它linux机器nfs的目录,自己dd的文件
如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 挂载window下共享的目录 //192.168.0.11/share /mnt 挂载其它linux机器下目录 ...
- LR运行负载测试场景-笔记
控制虚拟用户的行为:通用如图方式 查看用户的运行信息 在控制器释放前释放集合点用户 记录运行时注释---scenario-execution notes Vuser 对话框:初始化.运行.停止运行用户 ...
- CSS 背景图片 添加 重复和定位。
<!doctype html><html lang="en"> <head> <meta charset="UTF-8" ...
- 三、zookeeper安装
一.简介 二.下载解压: #wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar ...
- 一、纯css实现顶部进度条随滚动条滚动
一.效果图 二.直接复制粘贴 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- mysql group by 对多个字段进行分组
在平时的开发任务中我们经常会用到MYSQL的GROUP BY分组, 用来获取数据表中以分组字段为依据的统计数据.比如有一个学生选课表,表结构如下: Table: Subject_Selection S ...
- GA-H61M-DS2 BIOS SETTING
Boot Option #1,UEFI:Sandisk SDSSDHP128G Boot Option #2, Boot Option #3, Boot Option #4, Bootup Numbe ...
- 【python练习题】程序7
#题目:将一个列表的数据复制到另一个列表中. l = [1,2,3,4,5,6,7,8] m = [] m = l[:] print (m)
- moogodb 安装及简单介绍
1,安装Moogodb 因为是windows 64位操作系统,直接到官网上下载.msi文件,下载完成后点击安装,点击同意协议之后,出现下面的对话框, Choose Setup Type, 就是选择安装 ...