1269: [AHOI2006]文本编辑器editor
2017-06-24 11:32
246 查看
题目链接
题目大意:模拟文本编辑器,支持移动光标,区间删除插入翻转
题解:为rope而生的题,翻转操作维护一正一反两个rope,交换其字串。这样大概是O(n)……题目中限制了翻转次数,所以跑的飞快
我的收获:强啊
题目大意:模拟文本编辑器,支持移动光标,区间删除插入翻转
题解:为rope而生的题,翻转操作维护一正一反两个rope,交换其字串。这样大概是O(n)……题目中限制了翻转次数,所以跑的飞快
我的收获:强啊
#include<cstdio> #include<iostream> #include<ext/rope> #include<algorithm> using namespace std; using namespace __gnu_cxx; inline int read() { int x=0;char ch=getchar(); while(ch>'9'||ch<'0')ch=getchar(); while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x; } int n,now,len; rope <char> a,b,tmp; char s[2000000],rs[2000000]; int main() { n=read(); int x; while(n--) { scanf("%s",s); switch(s[0]) { case 'M':now=read();break; case 'P':now--;break; case 'N':now++;break; case 'G':printf("%c\n",a[now]);break; case 'I': { x=read();len=a.length(); for(int i=0;i<x;i++) { s[i]=getchar(); while(s[i]=='\n') s[i]=getchar(); rs[x-i-1]=s[i]; } rs[x]=s[x]=0; a.insert(now,s); b.insert(len-now,rs); break; } case 'D': { x=read();len=a.length(); a.erase(now,x); b.erase(len-now-x,x); break; } case 'R': { x=read();len=a.length(); tmp=a.substr(now,x); a=a.substr(0,now)+b.substr(len-now-x,x)+a.substr(now+x,len-now-x); b=b.substr(0,len-now-x)+tmp+b.substr(len-now,now); break; } } } return 0; }
相关文章推荐
- BZOJ 1269: [AHOI2006]文本编辑器editor( splay )
- 1269: [AHOI2006]文本编辑器editor
- bzoj 1269 [AHOI2006]文本编辑器editor
- bzoj 1269 [AHOI2006]文本编辑器editor 块状链表
- [NOI2003]Editor & [AHOI2006]文本编辑器editor BZOJ1507&BZOJ1269
- bzoj 1269: [AHOI2006]文本编辑器editor (splay) [省选计划系列]
- 【BZOJ1269/1507】[AHOI2006]文本编辑器editor Splay
- 【bzoj1507】[NOI2003]Editor /【bzoj1269】[AHOI2006]文本编辑器editor Splay
- Bzoj1269 [AHOI2006]文本编辑器editor
- 【bzoj1269】[AHOI2006]文本编辑器editor
- 【BZOJ 1269】 [AHOI2006]文本编辑器editor
- BZOJ 1269: [AHOI2006]文本编辑器editor (splay tree)
- BZOJ 1269: [AHOI2006]文本编辑器editor 分离合并Splay
- bzoj1269: [AHOI2006]文本编辑器editor rope
- 【rope】bzoj1269 [AHOI2006]文本编辑器editor
- 1269: [AHOI2006]文本编辑器editor (Splay)
- 【BZOJ】【1269】【AHOI2006】文本编辑器editor
- [BZOJ1269][AHOI2006]文本编辑器editor
- bzoj1269 [AHOI2006]文本编辑器editor
- 【BZOJ】1269: [AHOI2006]文本编辑器editor(Splay)