正题

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699


大意

有5种操作

1.在光标处写入一个数字
2.在光标处删除一个数字
3.4.将光标往 左/右 移动
5.询问一个位置(光标前)之前的最大前缀和


解题思路

我们开两个栈,一个是存光标前,一个存在光标之后。
然后写入就压入第一个栈,删除就弹出一个栈,光标左移就将第一个栈顶放入第二个栈,右移就将第二个栈放回第一个栈,询问就用f数组记录答案,然后直接输出。


code

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<stack>
using namespace std;
stack<int> a,b;
int n,x,sum,f[1000010],tot;
char c;
int main()
{while(scanf("%d",&n)>0){tot=0;f[0]=-2147483647;sum=0;while(!a.empty()) a.pop();while(!b.empty()) b.pop();for(int i=1;i<=n;i++){cin>>c;if(c=='I')//写入{scanf("%d",&x);a.push(x);tot++;sum+=x;f[tot]=max(f[tot-1],sum);}else if(c=='D'&&!a.empty())//删除{sum-=a.top();a.pop();tot--;}else if(c=='L'&&!a.empty())//左移{b.push(a.top());sum-=a.top();a.pop();tot--;}else if(c=='R'&&!b.empty())//右移{a.push(b.top());tot++;sum+=b.top();f[tot]=max(f[tot-1],sum);b.pop();}else if(c=='Q')//询问{scanf("%d",&x);printf("%d\n",f[x]);}}}
}

hdu4699-Editor【对顶栈】相关推荐

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

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

  2. 【HDOJ4699】Editor(对顶栈,模拟)

    problem 维护一个整数序列的编辑器,支持5种操作,操作数< 1e6 I x:在光标后插入数x,插入后光标移到x后 D:删除光标前的一个整数 L:光标左移一个位置 R:光标右移一个位置 Q ...

  3. HDU4699 Editor

    知识点:栈 这个题属于稍微难一点的,首先我们根据这个题是在序列的中间进行操作,那么可以想到使用对顶栈,类似于对顶堆的写法,两个栈就是第一个是从序列的开头到光标,第二个是从序列的光标到结尾,栈顶都是光标 ...

  4. 《算法竞赛进阶指南》刷题记录

    总算闲下来一些辣!然后最近发现其实看书是真真很有效但是一直没有落实!所以决定落实一下这段时间把这本书看完题目做完! 然后发现还有挺多题目挺巧妙的于是一堆博客预警,,,可能最近会写很多比较水(但是我还是 ...

  5. 数据结构总结1(火车进栈/兔子与兔子/括号画家/Editor/邻值查找/最大子序和/前缀统计/Phone List/The XOR Largest Pair)

    问题 A: 火车进栈 题目描述 这里有n列火车将要进站再出站-- 但是,每列火车只有1节-那就是车头-- 描述 有n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个 ...

  6. 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解

    目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...

  7. 0x11.基本数据结构 — 栈与单调栈

    目录 一.栈 0.AcWing 41. 包含min函数的栈 (自己造栈) 1.AcWing 128. 编辑器 (对顶栈) 2.AcWing 129. 火车进栈 3.AcWing 130. 火车进出栈问 ...

  8. 【读书笔记】《算法竞赛进阶指南》读书笔记——0x10基本数据结构

    to do(perhaps never) CH1401 后缀数组 所有课后题 栈 例题:HDU4699 Editor 维护一个整数序列的编辑器,支持以下五种操作: I x:在当前光标位置处插入一个整数 ...

  9. 2022杭电多校(四)

    2022杭电多校(四) 文章目录 2022杭电多校(四) 一.比赛小结 二.题目分析及解法(基础题) 1001.Link with Bracket Sequence II 1002.Link with ...

最新文章

  1. LeetCode() Remove duplicates from sorted list II
  2. 关于PR转PO的注意事项
  3. springMVC请求发生重复路径
  4. 有法院被执行人记录还能贷款吗?
  5. 排序算法java实现
  6. java 动软_动软代码生成器下载_2017动软代码生成器下载及相关推荐 - noYes软件大全...
  7. java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...
  8. STL标准模版库---stack操作大全
  9. php session不可用,php session 使用与安全
  10. rpg服务器修改数据,ATOM RPG 修改数据方法 怎么修改游戏数据-游侠网
  11. python破解qq空间访问权限_怎么利用爬虫爬取QQ空间中设置了权限的无法正常访问的内容?...
  12. 23个海外求职找各种工作的招聘网站
  13. iOS中JPG PNG GIF格式图片的区分
  14. monthcalendar控件
  15. 隐马尔科夫模型(HMMM)
  16. java BeanUtils.populate 学习
  17. C++基础知识 - 多重继承的二义性问题
  18. 06-08 无人机怎么拍摄VR全境图?
  19. Android禁止EditText弹出输入法
  20. [搬运]一百三十四 - TikTok原评论区搬运(机翻)

热门文章

  1. sequelize模型关联_关于Sequelize连接查询时inlude中model和association的区别详解
  2. apk源码查看工具_如何查看Linux命令工具的源码?
  3. git push被拒绝_规范git项目提交并自动生成项目commit log
  4. 二叉树的几道相似简单递归题
  5. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之下——设计键
  6. 在安装keepalived出现问题:需要:libmysqlclient.so.18
  7. [JS-BOM]BOM_History历史记录对象
  8. [Java基础]int和String的相互转换
  9. 网络原理往期考试题+部分详解+最终版
  10. Phone List POJ - 3630(字典树模板题)