hdu4699-Editor【对顶栈】
正题
题目链接: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【对顶栈】相关推荐
- Aizu - 1407 Parentheses Editor(对顶栈+模拟)
题目链接:点击查看 题目大意:给出一个字符串,只由 ' ( ' , ' ) ' 和 ' - ' 组成,初始时给出一个空串 s,三种字符所代表的操作如下: ' ( ' :在 s 后添加一个左括号 ' ) ...
- 【HDOJ4699】Editor(对顶栈,模拟)
problem 维护一个整数序列的编辑器,支持5种操作,操作数< 1e6 I x:在光标后插入数x,插入后光标移到x后 D:删除光标前的一个整数 L:光标左移一个位置 R:光标右移一个位置 Q ...
- HDU4699 Editor
知识点:栈 这个题属于稍微难一点的,首先我们根据这个题是在序列的中间进行操作,那么可以想到使用对顶栈,类似于对顶堆的写法,两个栈就是第一个是从序列的开头到光标,第二个是从序列的光标到结尾,栈顶都是光标 ...
- 《算法竞赛进阶指南》刷题记录
总算闲下来一些辣!然后最近发现其实看书是真真很有效但是一直没有落实!所以决定落实一下这段时间把这本书看完题目做完! 然后发现还有挺多题目挺巧妙的于是一堆博客预警,,,可能最近会写很多比较水(但是我还是 ...
- 数据结构总结1(火车进栈/兔子与兔子/括号画家/Editor/邻值查找/最大子序和/前缀统计/Phone List/The XOR Largest Pair)
问题 A: 火车进栈 题目描述 这里有n列火车将要进站再出站-- 但是,每列火车只有1节-那就是车头-- 描述 有n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个 ...
- 数据结构(C语言版) 第 三 章 栈与队列 知识梳理 + 作业习题详解
目录 一.栈 0.栈的基本概念 1.栈的实现 2.栈与递归 3.Hanoi塔问题 二.队列 0.队列的基本概念 1.队列的实现 2.循环队列 2.1循环队列的相关条件和公式: 3.链队列 4.链队列完 ...
- 0x11.基本数据结构 — 栈与单调栈
目录 一.栈 0.AcWing 41. 包含min函数的栈 (自己造栈) 1.AcWing 128. 编辑器 (对顶栈) 2.AcWing 129. 火车进栈 3.AcWing 130. 火车进出栈问 ...
- 【读书笔记】《算法竞赛进阶指南》读书笔记——0x10基本数据结构
to do(perhaps never) CH1401 后缀数组 所有课后题 栈 例题:HDU4699 Editor 维护一个整数序列的编辑器,支持以下五种操作: I x:在当前光标位置处插入一个整数 ...
- 2022杭电多校(四)
2022杭电多校(四) 文章目录 2022杭电多校(四) 一.比赛小结 二.题目分析及解法(基础题) 1001.Link with Bracket Sequence II 1002.Link with ...
最新文章
- LeetCode() Remove duplicates from sorted list II
- 关于PR转PO的注意事项
- springMVC请求发生重复路径
- 有法院被执行人记录还能贷款吗?
- 排序算法java实现
- java 动软_动软代码生成器下载_2017动软代码生成器下载及相关推荐 - noYes软件大全...
- java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...
- STL标准模版库---stack操作大全
- php session不可用,php session 使用与安全
- rpg服务器修改数据,ATOM RPG 修改数据方法 怎么修改游戏数据-游侠网
- python破解qq空间访问权限_怎么利用爬虫爬取QQ空间中设置了权限的无法正常访问的内容?...
- 23个海外求职找各种工作的招聘网站
- iOS中JPG PNG GIF格式图片的区分
- monthcalendar控件
- 隐马尔科夫模型(HMMM)
- java BeanUtils.populate 学习
- C++基础知识 - 多重继承的二义性问题
- 06-08 无人机怎么拍摄VR全境图?
- Android禁止EditText弹出输入法
- [搬运]一百三十四 - TikTok原评论区搬运(机翻)
热门文章
- sequelize模型关联_关于Sequelize连接查询时inlude中model和association的区别详解
- apk源码查看工具_如何查看Linux命令工具的源码?
- git push被拒绝_规范git项目提交并自动生成项目commit log
- 二叉树的几道相似简单递归题
- 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之下——设计键
- 在安装keepalived出现问题:需要:libmysqlclient.so.18
- [JS-BOM]BOM_History历史记录对象
- [Java基础]int和String的相互转换
- 网络原理往期考试题+部分详解+最终版
- Phone List POJ - 3630(字典树模板题)