[BZOJ1507][NOI2003][Rope]Editor

来源:互联网 发布:龙骑战歌 完整源码 编辑:程序博客网 时间:2024/06/03 20:51

[题目]


[算法]

splay维护,可用stl的rope

[分析]

没啥好分析的……不想写splay于是套了个ext/rope中的crope

[代码]

#include <cstdio>#include <cmath>#include <cstring>#include <ext/rope>#include <iostream>using namespace std;using namespace __gnu_cxx;#define MAXLEN 1224*1024crope s;char tmp[MAXLEN];char order[20];int now = 0;int n;int main(){    scanf("%d", &n);    for (int i = 1; i <= n ; i++)    {        scanf("%s", order);        int len;        switch (order[0])        {            case 'I':                scanf("%d", &len);                for (int j = 0; j < len; j++)                    while ((tmp[j] = getchar()) == '\n');                tmp[len] = '\0';                s.insert(now, tmp);                break;            case 'M':                scanf("%d", &now);                break;            case 'D':                scanf("%d", &len);                s.erase(now, len);                break;            case 'G':                scanf("%d", &len);                for (int j = now; j <= now + len - 1; j++)                    putchar(s[j]);                putchar('\n');                break;            case 'P':                now--;                break;            case 'N':                now++;                break;        }    }}


0 0