码迷,mamicode.com
首页 > 其他好文 > 详细

【rope】bzoj1269 [AHOI2006]文本编辑器editor

时间:2014-09-06 16:03:04      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   ar   for   art   

维护一个字符串,支持以下操作:

 
bubuko.com,布布扣

bubuko.com,布布扣
 

主要就是 成段插入、成段删除、成段翻转。前两个操作很好通过rope实现。第三个操作也不难,维护两个rope,一个正向,一个反向,翻转时swap一下就行了。
 
rope教程: http://blog.csdn.net/iamzky/article/details/38348653
 
Code(Orz zky):
 1 #include<cstdio>
 2 #include<ext/rope>
 3 using namespace std;
 4 using namespace __gnu_cxx;
 5 crope a,b,tmp;
 6 int n,p,sz,len,res;
 7 char op[21],s[2000001],r[2000001],c;
 8 inline int getint(){res=0;c=*;while(c<0||c>9)c=getchar();while(c>=0&&c<=9){res=res*10+(c-0);c=getchar();}return res;}
 9 int main()
10 {
11     scanf("%d",&n);
12     for(;n>0;n--)
13       {
14           scanf("%s",op);
15           if(op[0]==M)p=getint();
16           else if(op[0]==P)p--;
17         else if(op[0]==N)p++;
18           else if(op[0]==G){putchar(a[p]);putchar(\n);}
19           else if(op[0]==I)
20             {
21                 sz=getint();
22                 len=a.length();
23                 for(int i=0;i<sz;i++){
24                   do{s[i]=getchar();}while(s[i]==\n);
25                   r[sz-i-1]=s[i];
26                 }
27             s[sz]=r[sz]=\0;
28             a.insert(p,s);
29             b.insert(len-p,r);
30             }
31           else if(op[0]==D)
32             {
33               sz=getint();
34             len=a.length();
35             a.erase(p,sz);
36             b.erase(len-p-sz,sz);
37             }
38           else if(op[0]==R)
39             {
40                 sz=getint();
41             len=a.length();
42             tmp=a.substr(p,sz);
43             a=a.substr(0,p)+b.substr(len-p-sz,sz)+a.substr(p+sz,len-p-sz);
44             b=b.substr(0,len-p-sz)+tmp+b.substr(len-p,p);
45             }
46       }
47     return 0;
48 }

 

【rope】bzoj1269 [AHOI2006]文本编辑器editor

标签:des   style   blog   http   color   io   ar   for   art   

原文地址:http://www.cnblogs.com/autsky-jadek/p/3959455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!