洛谷P2286 [HNOI2004]宠物收养场(BZOJ1208)
平衡树
本来1A的。。。没有膜WA了3发,数组开小了又RE了一发。。。
加一个标记表示当前是宠物树还是领养者树。如果当前读入的和标记一样就直接加进去,否则找前驱和后继比较后删去一个点。当树为空时改变标记。
没有用内存池数组要开80000啊。。。别被10000坑到了。。。血一样的教训。。。
代码(这里用Treap):
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define N 80000
using namespace std;
const int MOD=1e6;
struct node{
int rnd,to[2],p,size;
int w;
}t[N+5];