Editor HDU - 4699 (栈)

时间:2022-09-16 00:16:00

Problem Description

Editor HDU - 4699 (栈)
 
Sample Input
8 I 2 I -1 I 1 Q 3 L D R Q 2
 
Sample Output
2 3
Hint

The following diagram shows the status of sequence after each instruction: Editor HDU - 4699 (栈)

题意:n个操作

5种操作,I x:该光标位置插入x并且光标后移

     D :删除光标前的一个数

    L :光标左移

    R :光标右移

    Q k:询问位置k之前的最大前缀和,k不会超过当前光标的位置

思路:

因为 I、D、L、R四种操作都时对于光标处发生,而且光标都只会移动一个位置,所以使用一种线性结构储存序列。可用数组、栈、双端队列。

这里使用两个栈进行序列的维护。

因为询问位置k之前的最大前缀和,那我们肯定要知道其前缀和才能得到最大的前缀和,所以用sum记录前缀和,ans【pos】 = max(ans【pos-1】,sum【pos】)

注:判断栈是否为空

#include<bits/stdc++.h>
using namespace std; const int maxn = 1e6+;
int n;
int sum[maxn];
int ans[maxn];
stack<int>s1,s2;
int main()
{
while(~scanf("%d",&n))
{
int pos = ;
ans[] = -0x3f3f3f3f;
while(!s1.empty())s1.pop();
while(!s2.empty())s2.pop();
while(n--)
{
char c;
int x;
scanf(" %c",&c);
if(c == 'I')
{
scanf("%d",&x);
s1.push(x);
pos++;
sum[pos] = sum[pos-] + x;
ans[pos] = max(ans[pos-],sum[pos]);
}
else if(c == 'D' && !s1.empty())
{
s1.pop();
pos--;
}
else if(c == 'L' && !s1.empty())
{
s2.push(s1.top());
s1.pop();
pos--;
}
else if(c == 'R' && !s2.empty())
{
s1.push(s2.top());
s2.pop();
pos++;
sum[pos] = sum[pos-] + s1.top();
ans[pos] = max(sum[pos],ans[pos-]);
}
else if(c == 'Q')
{
scanf("%d",&x);
printf("%d\n",ans[x]);
}
}
}
}

Editor HDU - 4699 (栈)的更多相关文章

  1. &lbrack;置顶&rsqb; hdu 4699 2个栈维护 or 伸展树

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

  2. HDU 4699 - Editor - &lbrack;对顶栈&rsqb;

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

  3. hdu 4699 Editor 模拟栈

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

  4. HDU 4699 Editor 维护栈

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

  5. HDU 4699 Editor&lpar;模拟 对顶栈&rpar;

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

  6. 【HDU 4699】 Editor

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...

  7. HDU 4699 Editor (2013多校10&comma;1004题)

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

  8. HDU - 4699 对顶栈

    Get到了全新O(1)替代部分伸展树功能的姿势 左栈stk1维护当前信息,右栈stk2维护历史删除信息 题目求的是严格的前缀和(且小于当前指针)那就每次左栈新增时再更新前缀和信息就好 即使把题面换成最 ...

  9. HDU 4699 Editor(双向链表)

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

随机推荐

  1. linux使用心得&lpar;持续更新&rpar;

    ! 查看发行版本信息 lsb_release -a uname -a   以下方法只适合redhat和centos cat /etc/redhat-release rpm -q redhat-rele ...

  2. 杭电ACM2061--Treasure the new start&comma; freshmen&excl;

    http://acm.hdu.edu.cn/showproblem.php?pid=2061 这题很简单.注意换行. <span style="font-size:18px;&quot ...

  3. php非递归无限级分类&period;

    项目需要.递归无限级分类效率实在太低.理了半天思路写的. 分类越多效率越高. /** * 单次循环返回无限极分类嵌套 * @param array $data 操作的数组 * @param strin ...

  4. STL&lowbar;函数模板

    #include <iostream>#include <string>using namespace std; #define MAX(T) \ T max_##T (T x ...

  5. mysql 局域网同事之间直接用客户端访问

    情景: 几个人作为小组开发一个项目,以我的机器为服务器,将mysql服务安装在我的机器上,其他小伙伴用客户端都能访问我这个数据库 解决:   首先: 1.设置mysql允许其它机器连接(linux环境 ...

  6. Java 图片处理解决方案:ImageMagick 快速入门

    一.ImageMagick介绍 ImageMagick是一个免费的创建.编辑.合成图片的软件,可以实现图片切割.颜色替换.图片缩略图.图片水印等各种效果.ImageMagick是免费开源软件,支持大多 ...

  7. PHP连接数据&lowbar;insert&lowbar;id介绍

    对于自增长的主键列不好取值的情况,php提供了一个变量来取值,insert_id $db = new MySQLi("localhost","root",&qu ...

  8. Spring Boot-------JPA基础及查询规则

    JPA基础及查询规则 JPA JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数 ...

  9. 【LDAP】LDAP注入漏洞与防御

    0x01 前言 前两天爆了一个LDAP漏洞,据说存在了8年现在才被发现,感概一下,不知这8年来有多少站被搞了... 想着复现这个漏洞,就先复习一下LDAP注入的相关知识吧,差了很多资料,记一下笔记. ...

  10. Android中使用databinding编译时出现的error&colon;Execution failed for task &&num;39&semi;&colon;app&colon;dataBindingProcessLayoutsDebug&&num;39&semi;

    Windows环境下使用svn对AndroidStudio更新代码时,总会在源文件中出现一堆乱码,尤其是xml文件中的乱码,不仅找起来费劲,改起来更费劲. 最近从svn更新代码之后,编译时出现了下面这 ...