【Luogu P2201】【JZOJ 3922】数列编辑器
题面:
Description
小Z是一个爱好数学的小学生。最近,他在研究一些关于整数数列的性质。
为了方便他的研究,小Z希望实现一个叫做“Open Continuous Lines Processor”的数列编辑器。
一开始,数列编辑器里没有数字,只有一个光标。这个数列编辑器需要支持五种操作。
• \(\texttt{I}\) x 在当前光标前插入数字 x。
• \(\texttt{D}\) 删除当前光标前的数字。
• \(\texttt{L}\) 光标向前移动一个数字。
• \(\texttt{R}\) 光标向后移动一个数字。
• \(\texttt{Q k}\) 设光标之前的数列是{a1,a2,……,an},输出第k位及之前最大的前缀和,保证k≤n。
Input
第一行包含一个数字 N ,表示操作的个数。
接下来包含 N 行,每行包含一条命令
Output
对于每个Q k 命令,输出一个整数表示这个操作的答案。
Sample Input
8
I 2
I -1
I 1
Q 3
L
D
R
Q 2
Sample Output
2
3
Data Constraint
【数据规模】 对于 50% 的数据,N ≤ 1000; 对于 80% 的数据,N ≤ 100000; 对于 100% 的数据,N ≤ 1000000,插入的数字绝对值大小不会超过 1000。
正文:
考试的时候是开了个双向链表存整个数列,再开两个指针分别指向整个链表第一个和光标前一个。但查询的时候很显然是\(\theta(n)\)的时间复杂度,会\(\text{TLE}\)。
所以我们可以用到栈。开两个栈分别表示光标左边的数列\(s1\)和光标右边的数列\(s2\)。再开个数组\(Max_k\)表示第k位及之前最大的前缀和。
当执行\(\texttt{L}\)时,把栈顶的值移到另一个栈里。执行\(\texttt{R}\)时,把栈顶的值移到另一个栈里的同时,更新\(Max\),执行\(\texttt{D}\)时,直接删除\(s1\)栈顶。执行\(\texttt{I}\)时,入栈、更新\(Max\)。输出时直接返回\(Max_k\)就好了。
【Luogu P2201】【JZOJ 3922】数列编辑器的更多相关文章
- 「Luogu P2201」数列编辑器 解题报告
数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我
- [luogu P1438] 无聊的数列
[luogu P1438] 无聊的数列 题目背景 无聊的YYB总喜欢搞出一些正常人无法搞出的东西.有一天,无聊的YYB想出了一道无聊的题:无聊的数列...(K峰:这题不是傻X题吗) 题目描述 维护一个 ...
- 洛谷【P2201】数列编辑器
我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P220 ...
- P2201 数列编辑器
传送门呀呀呀呀呀呀呀呀呀呀呀呀呀 \(乍一看题目好像很难\)(实际也确实很难) \(但是我们仔细看就发现,整个数列分成了光标前和光标后两组数列\) \(我们有什么理由不分开储存呢??\) \(然后光标 ...
- luogu P4108 [HEOI2015]公约数数列——solution
-by luogu 不会啊.... 然后%了一发题解, 关键是 考虑序列{$a_n$}的前缀gcd序列, 它是单调不升的,且最多只会改变$log_2N$次,因为每变一次至少除2 于是,当我们询问x时: ...
- BZOJ 1500 Luogu P2042 [NOI2005] 维护数列 (Splay)
手动博客搬家: 本文发表于20180825 00:34:49, 原地址https://blog.csdn.net/suncongbo/article/details/82027387 题目链接: (l ...
- [Luogu] 矩阵加速(数列)
题面:https://www.luogu.org/problemnew/show/P1939 题解:https://www.zybuluo.com/wsndy-xx/note/1153810
- Luogu P2042 [NOI2005]维护数列
题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线' _ '表示实际输入文件中的空格) 输入输出格式 输入格式: 输入文件的第 1 行包含两个数 N 和 M, ...
- Luogu P2042 [NOI2005]维护数列(平衡树)
P2042 [NOI2005]维护数列 题意 题目描述 请写一个程序,要求维护一个数列,支持以下\(6\)种操作:(请注意,格式栏中的下划线'_'表示实际输入文件中的空格) 输入输出格式 输入格式: ...
随机推荐
- 使用linq将2个Datatable合并
DataTable dtStepX = new DataTable("dtStepX"); DataTable dtStepS = new DataTable("dtSt ...
- git windows下换行符问题
不同操系统下的换行符 CR回车 LF换行 Windows/Dos CRLF \r\n Linux/Unix LF \n MacOS CR \r 1.执行git config --get core.au ...
- 序列式容器————forward_list
单链表的形式存储元素.forward_list 的模板定义在头文件 forward_list 中.fdrward_list 和 list 最主要的区别是:它不能反向遍历元素:只能从头到尾遍历. for ...
- Java中参数的引用传递和值传递
1.一些定义 值传递:把实际传入参数的值,在内存中赋值一份 引用传递:传入的是实际参数的地址 2.传递基本类型的参数 因为Java是值传递,那就不难理解下面的代码不交换任何值 swap(Type ar ...
- 从Java中的length和length()开始
1.在没有IDE自动补齐的情况下,怎样得到数组的长度?怎样得到字符串的长度? int[] arr = new int[3]; System.out.println(arr.length);//leng ...
- 假设高度已知,请写出三栏布局,其中左栏、右栏各为300px,中间自适应的五种方法
假设高度已知,请写出三栏布局,其中左栏.右栏各为300px,中间自适应的五种方法 HTML CSS 页面布局 题目:假设高度已知,请写出三栏布局,其中左栏.右栏各为300px,中间自适应 <!D ...
- idea中查看一个类的调用用和被调用用关系
- GoldenGate—AUTORESTART配置
AUTORESTART Valid For Manager Description Use the AUTORESTART parameter to start one or more Extract ...
- Webpack的tapable 为什么要使用 new Funtion 来生成静态代码
为了保持代码的单态(monomorphism). 这涉及到了js引擎优化的一些问题, tapable从1.0.0版本开始就用new Function来生成静态代码最后来来执行, 以确保得到最优执行效率 ...
- 阶段3 1.Mybatis_09.Mybatis的多表操作_3 完成account的一对一操作-通过写account的子类方式查询
先把多表查询的sql语句写出来 想要显示的字段 创建一个AccountUser类 继承Account.这样它就会从父类上继承一些信息 这里只需要定义username和address就可以了 .然后生成 ...