标签:des style blog http color io ar for art
维护一个字符串,支持以下操作:
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