BZOJ-1269: [AHOI2006]文本编辑器editor(splay)

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

跟NOI03的那道editor没什么区别,只是多维护一个Reverse(翻转)标记,旋转的时候记得下传标记。

代码:

738b4710b912c8fc9c4aabdefe039245d6882163.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-1269: [AHOI2006]文本编辑器editor(splay))