对顶栈算法。

此题充分说明了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的更多相关文章

  1. HDOJ 4699 Editor 栈 模拟

    用两个栈模拟: Editor Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  2. HDOJ 4699 Editor 对顶栈模拟

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

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

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

  4. HDU 4699 Editor (2013多校10,1004题)

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

  5. hdu 4699 Editor 模拟栈

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

  6. HDU 4699 Editor(双向链表)

    双向链表直接模拟. 用一个辅助数组maxSum来维护一下前k项中[1,k]的最大和. 因为光标是一格一格的移动,所以每次光标右移的时候动态更新一下即可. 时间复杂度O(n). #include < ...

  7. HDU 4699 Editor 维护栈

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

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

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

  9. HDU—4699 Editor 双向链表+子集和

    惨.今天聪哥选了2013 多校10做训练,结果一题都没做出来.这个题目是数据结构,正好是我强项 如果只是插入 删除 光标左右移动,那都小菜,用链表全解决,关键是那个Q k 要求 a1到aq的连续子序列 ...

随机推荐

  1. mybatis二级缓存详解

    1  二级缓存简介 二级缓存是在多个SqlSession在同一个Mapper文件中共享的缓存,它是Mapper级别的,其作用域是Mapper文件中的namespace,默认是不开启的.看如下图: 1. ...

  2. docker开启加速(第三篇)

    前言:  docker的镜像仓库在国外,下载会很慢,启用阿里云加速. 第一步:cd /etc/docker目录下,打开daemon.json 第二步:修改daemon.json文件,添加阿里云加速: ...

  3. day 7-16 单表查询

    一.准备工作 先把表建立好,方便一会查询. create table emp( id int not null unique auto_increment, name varchar(20) not ...

  4. ES6/ES2015的一些特性的简单使

    1.一些常用的ES6的特性: let, const, class, extends, super, arrow functions, template string, destructuring, d ...

  5. MyBatis映射文件5

    返回map     Map<String,Object> getEmpByResMap(Integer id); <select id="getEmpByResMap&qu ...

  6. Handler主线程子线程之间的互相通信

    Handler主线程子线程之间的互相通信 package com.wyl.dansnote; import android.app.Activity; import android.os.Bundle ...

  7. Hbase 架构体系

    有2个节点进程,一个是master,另一是regionserver.

  8. WPF实现滚动显示的TextBlock

    在我们使用TextBlock进行数据显示时,经常会遇到这样一种情况就是TextBlock的文字内容太多,如果全部显示的话会占据大量的界面,这是我们就会只让其显示一部分,另外的一部分就让其随着时间的推移 ...

  9. js中判断数据类型的4中方法

    注意: js中数据类型有7种(number, boolean, string, null, undefined, object, Symbol(es6新增)) 原始数据类型: number, stri ...

  10. Druid数据库连接池

    一.Druid连接池的创建 package cn.zhouzhou; import java.io.IOException; import java.io.InputStream; import ja ...