BZOJ-1507: [NOI2003]Editor

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1507

用splay维护序列的方法维护就可以了,然后直接把根节点作为光标方便操作(比NOI05的那道splay好写多了。。。)

代码:

1e30e924b899a901a07541251f950a7b0208f565.jpg.png
#include 
#include 
#include 
 
using namespace std;
 
#define MAXN 2000010
#define L(t) T[t].Left
#define R(t) T[t].Right
#define S(t) T[t].Size
#define C(t) T[t].Char
#define update(t) S(t)=S(L(t))+S(R(t))+1
#define Cl(r,t) (rr) { t=0; return ; }
    int mid=(l+r)>>1;
    C(t=++M)=s[mid];
    S(t)=r-l+1;
    build(l,mid-1,L(t)),build(mid+1,r,R(t));
    update(t);
}
 
void getstring(int N) {
    int ch;
    for (int i=0;i++

你可能感兴趣的:(BZOJ-1507: [NOI2003]Editor)