【SSLGZ 2788】2017年10月24日提高组 想法的升级
2017-10-24 20:44
302 查看
问题描述
输入
输出
样例输入
8
I 2
I -1
I 1
Q 3
L
D
R
Q 2
样例输出
2
3
数据范围
样例解释
算法讨论
因为每次询问的k都在光标之前,所以我们将光标之前的数放进一个数组里,光标之后的丢到一个栈中,每次光标左移就将数组中最后一个数丢到栈里,反之把栈顶的数弹到数组中,然后维护一下前缀和和最大前缀和。
Pixiv ID:63162441
输入
输出
样例输入
8
I 2
I -1
I 1
Q 3
L
D
R
Q 2
样例输出
2
3
数据范围
样例解释
算法讨论
因为每次询问的k都在光标之前,所以我们将光标之前的数放进一个数组里,光标之后的丢到一个栈中,每次光标左移就将数组中最后一个数丢到栈里,反之把栈顶的数弹到数组中,然后维护一下前缀和和最大前缀和。
#include <cstdio> #include <cstring> #include <string> using namespace std; #define maxn 1000006 #define maxlongint 21474836 int a[maxn],f[maxn],t[maxn],a1[maxn]; int n,l,p,p1; char ff,c; int main() { scanf("%d",&n); memset(t,-maxlongint,sizeof(t)); for (int k=1;k<=n;k++) { scanf("%c%c",&ff,&c); if (c=='I') { int x=0; scanf("%d",&x); a[++p]=x; f[p]=f[p-1]+a[p]; if (t[p-1]<f[p]) t[p]=f[p]; else t[p]=t[p-1]; } if (c=='D') { a[p]=0; f[p]=0; t[p--]=-maxlongint; } if (c=='L') if (p!=0) { a1[++p1]=a[p]; a[p]=0; f[p]=0; t[p--]=-maxlongint; } if (c=='R') if (p1!=0) { a[++p]=a1[p1--]; f[p]=f[p-1]+a[p]; if (t[p-1]<f[p]) t[p]=f[p]; else t[p]=t[p-1]; } if (c=='Q') { int k=0; scanf("%d",&k); printf("%d\n",t[k]); } } }
Pixiv ID:63162441
相关文章推荐
- SSL2787 2017年10月24日提高组 一个不成熟的想法(dfs)
- 蓝桥杯 ADV-171 算法提高 身份证号码升级
- 心态和想法,是提高编程水平的关键
- 【SSLGZ 2677】2017年8月10号提高组T2 飞行
- 【SSLGZ 2705】2017年8月17日提高组T1 游戏
- 蓝桥杯 算法提高 身份证号码升级
- FFT/NTT做题方法与调试技巧(+提高码题效率的一些想法)
- 增强Delphi程序安全性的几个想法,提高反破解能力
- 老机器软升级,提高系统性能
- 蓝桥杯 ADV-171 算法提高 身份证号码升级
- 全新升级的WiFi无线上网短信认证系统,适用于咖啡厅、足浴等公共场所,提高门门店营业收入
- 算法提高 身份证号码升级
- 【SSLGZ 2667】2017年8月7日提高组T1 呵呵
- 【SSLGZ 2681】2017年8月11日提高组T3 难题
- 关于提高配置管理工作的可操作性的想法 [ 光影人像 东海陈光剑 的博客 ]
- 【SSLGZ 2813】2017年10月31日提高组T1 注册
- 心态和想法,是提高编程水平的关键
- WEB实现在线版本升级工具的一些想法[WEB OTA]
- 增强Delphi程序安全性的几个想法,提高反破解能力
- 心态和想法,是提高编程水平的关键