【JZOJ4778】数列编辑器
来源:互联网 发布:linux编辑保存命令 编辑:程序博客网 时间:2024/05/20 18:41
Description
Solution
只要发现询问的k是在光标前,这题就没有问题了。
剩下的就是用双向链表维护,维护前缀和即可。
Code
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define N 1000100#define ll long longusing namespace std;int a[N],nx[N],ls[N],num=0;ll s[N],sm[N];int b[N];int main(){ freopen("editor.in","r",stdin); freopen("editor.out","w",stdout); int Q; cin>>Q; int c=0,p=0; nx[0]=N-99; ls[N-99]=0; ls[0]=-1; b[0]=0; sm[0]=-2147483647; while(Q--) { char ch[3]; int x; scanf("%s",ch); if(ch[0]=='I') { scanf("%d",&x); a[++num]=x; ls[nx[p]]=num; nx[num]=nx[p]; nx[p]=num; ls[num]=p; b[num]=b[ls[num]]+1; p=nx[p]; int t=b[p]; s[t]=s[t-1]+x; sm[t]=max(sm[t-1],s[t]); } else if(ch[0]=='D') { ls[nx[p]]=ls[p]; nx[ls[p]]=nx[p]; p=ls[p]; } else if(ch[0]=='L') { if(ls[p]!=-1) p=ls[p]; } else if(ch[0]=='R') { if(nx[p]!=N-99) { p=nx[p]; b[p]=b[ls[p]]+1; int t=b[p]; s[t]=s[t-1]+a[p]; sm[t]=max(sm[t-1],s[t]); } } else { scanf("%d",&x); printf("%d\n",sm[x]); } }}
1 0
- 【jzoj4778】【数列编辑器】
- 【JZOJ4778】数列编辑器
- Jzoj4778 数列编辑器
- NOIP提高组 【JZOJ4778】数列编辑器
- {题解}[jzoj4778]【NOIP2016提高A组模拟9.14】数列编辑器
- 【NOIP模拟】数列编辑器
- 【NOIP提高组】数列编辑器
- [bzoj1269]文本编辑器editor [bzoj1500]维修数列
- 【NOI2003T2】文本编辑器Editor-伸展树数列操作
- 数列编辑器 【NOIP2016提高A组模拟9.14】
- 【NOIP2016提高A组模拟9.14】数列编辑器
- 【NOIP2016提高A组模拟9.14】数列编辑器
- JZOJ 4778. 【NOIP2016提高A组模拟9.14】数列编辑器
- JZOJsenior4778.【NOIP2016提高A组模拟9.14】数列编辑器
- JZOJ.4778. 【NOIP2016提高A组模拟9.14】数列编辑器
- 数列
- 数列
- 数列
- webview获取网页标题并展示、自定义(重写)网页的alert弹框
- 微信公众平台实现获取用户OpenID的方法
- jsp的useBean作用域问题
- 关于java的一些问题,比较基础,大家可以看看咯
- 工程师们,不要想一辈子靠技术混饭吃(献给自己三个月后走出校门的自己)
- 【JZOJ4778】数列编辑器
- jquery节点的操作 创建 删除 复制
- NOIP2016提高组滚粗记
- Lightoj 1082【RMQ】
- 区块链开源项目Ripple二、相关概念介绍及思考
- Oracle建立表空间和用户
- 极光推送JPush java服务端代码
- Linux虚拟机mysql连接数太多
- 链表 带表头 循环