1 条题解

  • 0
    @ 2026-7-27 18:26:57
    //rope版本
    #include <bits/stdc++.h>
    #include <ext/rope>
    using namespace std;
    using namespace __gnu_cxx;
    
    rope<char> a; 
    int q, pos = 0;
    char s[10000005];
    
    signed main() {
        cin >> q;
    	while(q --) {
    		string opt; cin >> opt;
    		int x;
    		switch(opt[0]) {
    			case 'M': {
    				cin >> x; 
    				pos = x;
    				break;
    			}
    			case 'I': {
    				cin >> x; 
    				int cnt = 0;
    				getchar();for(int i = 0; i < x; i++) s[i] = getchar();
    				a.insert(pos, s, x); 
    				break;
    			}
    			case 'D': {
    				cin >> x; 
    				a.erase(pos, x);				
    				break;
    			}
    			case 'R': {
                    cin >> x;
    				a.copy(pos, x, s);
        			reverse(s, s + x);
        			a.erase(pos, x);
        			a.insert(pos, s, x);
    				break;
    			}
    			case 'G': {
    				cout << a[pos];
    				if(a[pos] != 10) cout << '\n'; 
    				break;
    			}
    			case 'P': {
    				pos --;
    				break;
    			}
    			case 'N': {
    				pos ++;
    				break;
    			}
    		}
    	}
        return 0;
    }
    
    • 1

    *【STL:string】[AHOI2006] 文本编辑器

    信息

    ID
    2922
    时间
    3000ms
    内存
    1024MiB
    难度
    9
    标签
    递交数
    27
    已通过
    2
    上传者