题目大意:

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4699
一个打字机有5种功能:

  • III x" role="presentation" style="position: relative;">xxx:在光标后面插入xxx这个元素
  • R" role="presentation" style="position: relative;">RRR:将光标右移
  • LLL:将光标左移
  • Q" role="presentation" style="position: relative;">QQQ xxx:输出前x" role="presentation" style="position: relative;">xxx个数字的连续最大和
  • DDD:删除光标的前一个数字

思路:

模拟栈。开两个栈a" role="presentation" style="position: relative;">aaa和bbb,光标左边的数字放在a" role="presentation" style="position: relative;">aaa栈,光标右边的数字放在bbb栈。
对于每一个操作:

  1. I" role="presentation" style="position: relative;">III xxx:在a" role="presentation" style="position: relative;">aaa中插入一个元素xxx,并且求出a" role="presentation" style="position: relative;">aaa的前缀和以及QQQ的答案。易得方程

    f[i]=max(f[i−1],sum[i])" role="presentation">f[i]=max(f[i−1],sum[i])f[i]=max(f[i−1],sum[i])

    f[i]=max(f[i-1],sum[i])

  2. RRR:将b" role="presentation" style="position: relative;">bbb栈的栈顶元素弹出并放入aaa栈中,同时像I" role="presentation" style="position: relative;">III操作一样求出sum[i]sum[i]sum[i]和f[i]f[i]f[i]
  3. LLL:将a" role="presentation" style="position: relative;">aaa栈的栈顶元素弹出并放入bbb栈中,sum[i]" role="presentation" style="position: relative;">sum[i]sum[i]sum[i]和f[i]f[i]f[i]清零
  4. QQQ x" role="presentation" style="position: relative;">xxx:直接输出f[x]f[x]f[x]
  5. DDD:将a" role="presentation" style="position: relative;">aaa栈栈顶元素弹出,sum[i]sum[i]sum[i]和f[i]f[i]f[i]清零
  6. 本题由多组测试数据!


    代码:

    #include <cstdio>
    #include <stack>
    #include <iostream>
    #include <cstring>
    #define Inf 1e8
    using namespace std;int n,x,k[1000001],f[1000001],m,sum[1000001];
    char c;
    stack<int> a;
    stack<int> b;int main()
    {while (scanf("%d",&n)==1){while (a.size()) a.pop();while (b.size()) b.pop();f[0]=-Inf;sum[0]=0;m=0;  //初始化for (int j=1;j<=n;j++){cin>>c;if (c=='I'){m++;scanf("%d",&k[m]);a.push(k[m]);sum[m]=sum[m-1]+k[m];f[m]=max(f[m-1],sum[m]);}elseif (c=='R'){if (b.size()) {m++;x=b.top();a.push(x);b.pop();sum[m]=sum[m-1]+x;f[m]=max(f[m-1],sum[m]);}   }elseif (c=='L'){if (a.size()) {sum[m]=f[m]=0;m--;x=a.top();b.push(x);a.pop();}}elseif (c=='Q'){scanf("%d",&x);printf("%d\n",f[x]);}elseif (c=='D'){if (a.size()){a.pop();sum[m]=f[m]=0;m--;} }}}return 0;
    }

【HDU 4699】Editor【栈】相关推荐

  1. hdu 4699 Editor(splay tree 伸展树)

    hdu 4699  Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和.. 解题思路:标乘是用了栈进行维 ...

  2. hdu 4699 Editor(Splay)

    题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求到k位置的最大的前缀和. Splay在比赛的时候写得太Navie,T了整场. 左移和右移的 ...

  3. hdu 4699 2个栈维护 or 伸展树 (2013多校联合)

    hdu 4699  Editor 题意:对一个数列进行操作,光标位置后面插入一个权值为x的数,删除光标前的那个数,光标左移一位,光标右移一位,求1到k位置的最大的前缀和.. 注意这里的k是在光标之前的 ...

  4. HDU 3328 Flipper 栈 模拟

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

  5. Editor HDU 4699

    题目 #include <iostream> using namespace std;const int N = 1e6 + 10; int p[2], a[N], b[N], sum[N ...

  6. Codeforces Round #350 (Div. 2) E. Correct Bracket Sequence Editor 栈 链表

    E. Correct Bracket Sequence Editor 题目连接: http://www.codeforces.com/contest/670/problem/E Description ...

  7. hdu 4252(单调栈)

    题意:一张相片上的很多建筑相互遮住了,根据高低不同就在相片上把一座高楼的可见部分作为一个矩形,并用数字描述其高度,若一张相片上的两个建筑群中间有空地,高度则为0;求最少有多少个建筑; 解题思路:这道题 ...

  8. Train Problem I hdu 1022(栈)

    http://acm.split.hdu.edu.cn/showproblem.php?pid=1022 题意:给出火车的进站与出站顺序,判断是否可以按照给出的出站顺序出站. #include < ...

  9. java web自动生成编号_2013-8-6 10:56:07 JAVA_WEB:员工号自动生成源代码

    create table user_info_temp ( usId varchar2(20), usNo varchar2(20), usName varchar2(50) ) --oracle中如 ...

  10. 【HDOJ】4699 Editor_天涯浪子_新浪博客

    [题目] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [报告] 模拟题吧,本身不是很难. 最初的想法是用Splay tree写,然后疯掉了.苏牛说2B ...

最新文章

  1. 视频处理器为电池供电的设计提供4K视频编码
  2. 统一同一物理主机上VMware虚拟出的不同操作系统如何通信
  3. 机器人研究员的崛起 |《自然》论文
  4. Python回归模型评估
  5. eclipse调试报错,无法进入类的解决办法
  6. Jdbc创建表 利用循环添加数据 ,更新数据
  7. linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...
  8. 【~~~】POJ-1006
  9. LeetCode 697. 数组的度
  10. 计算机重启是什么原因,电脑自动重启是什么原因
  11. POJ 3080 - Blue Jeans
  12. Kotlin — 使用IDEA运行第一个Kotlin程序,打印“Hello World”!
  13. VUE项目导入bootstrap
  14. 4米乘以12米CAD图_实例讲解CAD制图比例
  15. 英语有哪些等级?公认CEFR等级是什么?C2到底是什么等级
  16. SylixOS 技术简介
  17. 12306火车票查询——Python
  18. 项目管理工具之甘特图
  19. Qt 动画飞舞的蝴蝶源码
  20. 6. 中文命名实体提取

热门文章

  1. C语言中圆的周长怎么算,圆的周长公式 周长怎么算出来的
  2. 分块矩阵求逆 matlab,矩阵的分块求逆及解线性方程组.doc
  3. 回顾历史5次经济衰退时期:这一次可能会有何不同?
  4. 11月15~30非技术积累
  5. 使用 Java 进行 HL7 编程
  6. 集合中的(交集,并集,差集,补集,对称差集)
  7. 并集、交集、差集、补集的概念是什么?
  8. Element UI中的Descriptions描述列表
  9. 【大数据】Linkis如何安装部署,及一些常见问题
  10. 英雄联盟lol鼠标突然不能a兵了