problem

  • 维护一个整数序列的编辑器,支持5种操作,操作数< 1e6
  • I x:在光标后插入数x,插入后光标移到x后
  • D:删除光标前的一个整数
  • L:光标左移一个位置
  • R:光标右移一个位置
  • Q k:询问k之前的最大前缀和,k不超过光标位置

solution

  • 特殊性:I,D,L,R都在光标位置修改。所以想到对顶栈。
  • 再开一个数组f维护栈A的前缀和的最大值即可。

codes

#include<cstdio>
#include<algorithm>
#include<stack>
using namespace std;
const int maxn = 1e6+10;
int f[maxn];
int main(){int T;while(scanf("%d",&T)!=EOF){stack<int>A,B;int sum = 0;//到光标为止的前缀和f[0]=-999999999;while(T--){char op[20];scanf("%s",op);if(op[0]=='I'){int x; scanf("%d",&x);A.push(x);sum += x;int cur = A.size();f[cur] = max(sum, f[cur-1]);}else if(op[0]=='D'){if(A.size()>=1){sum -= A.top();A.pop();}}else if(op[0]=='L'){if(A.size()>=1){sum -= A.top();B.push(A.top());A.pop();}}else if(op[0]=='R'){if(B.size()>=1){A.push(B.top());sum += B.top();int cur = A.size();f[cur] = max(sum,f[cur-1]);B.pop();}}else if(op[0]=='Q'){int k; scanf("%d",&k);printf("%d\n",f[k]);}}}return 0;
}

【HDOJ4699】Editor(对顶栈,模拟)相关推荐

  1. Aizu - 1407 Parentheses Editor(对顶栈+模拟)

    题目链接:点击查看 题目大意:给出一个字符串,只由 ' ( ' , ' ) ' 和 ' - ' 组成,初始时给出一个空串 s,三种字符所代表的操作如下: ' ( ' :在 s 后添加一个左括号 ' ) ...

  2. 每日一套codeforce集训1119E[贪心],821C[栈模拟],645D[拓扑排序]

    有n种长度的棍子,长度分别为2^0 ,2 ^ 1,-,2 ^ (n-1) ,每种棍子有a[i] 种,问你能组成多少个三角形. 三角形两边之和大于第三边,而2 ^ i + 2 ^ i = 2 ^ (i+ ...

  3. P1944 最长括号匹配(栈模拟/DP)

    P1944 最长括号匹配 可以直接用栈模拟,把匹配好的标记一下, 最后找到最长的匹配输出即可. 如果是要求最长的长度的题那么只需要求数就行了,没必要把原序列真的按照题意改变 如果要求序列,那么只需要按 ...

  4. 【干货】容器适配器实现两个栈模拟队列

    用两个栈模拟队列的思想就是"倒水思想",这里我们用自定义类型模拟出线性表,再用线性表做容器实现栈的数据结构,最后用栈来实现队列,代码如下: #include<iostream ...

  5. Code POJ - 1780(栈模拟dfs)

    题意: 就是数位哈密顿回路 解析: 是就算了...尼玛还不能直接用dfs,得手动开栈模拟dfs emm...看了老大半天才看的一知半解 #include <iostream> #inclu ...

  6. 括号配对问题----栈模拟

    括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N<=100), ...

  7. HDU 3328 Flipper 栈 模拟

    HDU 3328 Flipper 栈 模拟 首先想说,英语太烂这题读了很长时间才读懂......题意是说输入有几张牌,然后输入这些牌的初始状态(是面朝上还是面朝下),然后输入操作方式,R表示翻一下右边 ...

  8. 227 用栈模拟汉诺塔问题

    原题网址:https://www.lintcode.com/problem/mock-hanoi-tower-by-stacks/description 描述 在经典的汉诺塔问题中,有 3 个塔和 N ...

  9. 栈模拟递归 遍历二叉树的正确写法

    栈模拟递归 遍历二叉树的正确写法 二叉树的生成 树的层次遍历 前中后序遍历的递归实现 关于栈的实现 Reference 对于二叉树的生成,遍历,应该是树这个数据结构需要的基本功,只有真的理解了树的生成 ...

最新文章

  1. C# 视频监控系列(9):服务器端——数据捕获(抓图 + 录像)
  2. 5_计算显卡对比(20190103- )
  3. 如何快将数据集划分为train、val(Python3代码模板)
  4. 关于 Kubernetes 规划的灵魂 n 问
  5. PHP5.4.3,有些插件不是你想用就能用的
  6. 我是如何实用:before :after
  7. BugkuCTF-PWN题pwn3-read_note超详细讲解
  8. 【仿59store校园o2o系统 v6.8】夜猫店+校园超市+学生街+微信公众号绑定+校园跑腿插件
  9. SpringBoot支持JSP教程
  10. Andriod Studio 使用心得,持续更新中
  11. python实现编辑距离,最长公共子序列,最长公共子串
  12. 【手写字母识别】基于matlab GUI模板匹配手写大写字母识别【含Matlab源码 115期】
  13. 光模块基础知识【快速入门】02
  14. 比较不错的MaciOS软件论坛
  15. 第十二周项目四:银行系统(一)
  16. uni-app入门及练手项目
  17. 让电脑键盘L键变成锁定计算机怎么办,教你电脑键盘按键错乱怎么恢复
  18. 使用xib自定义button
  19. STM32F429IGT6使用SDRAM(W9825G6KH-6)
  20. Google首席决策师告诉你AI和数据科学团队需要哪10种角色?

热门文章

  1. 同义反复,相似的表达
  2. 内存、时间复杂度、CPU/GPU以及运行时间
  3. 危险的化学 —— 氢氟酸
  4. 逻辑学 —— 复杂问题谬误
  5. 数论基本定理及应用(四)
  6. 自定义 C++ 中的 range() 函数
  7. C++11/14::右值引用
  8. java中的criteria_java-jpa-criteriaBuilder使用入门
  9. 安卓一个页面设置另一个页面的文本样式_H1标签对于SEO有多重要?页面要不要用H1标签呢?...
  10. python语言入门-Python语言入门详解!快速学成Python!