splay
void splay(int i,int tar) { while(nd[i].fa!=tar){ int j=nd[i].fa; if(nd[j].fa!=tar&&who(i)==who(j)) rotate(j); rotate(i); } if(tar==-1) root=i; return; }
这个才是正确的写法!!!
这个才是正确的写法!!!
这个才是正确的写法!!!
不要加else!!!
不要加else!!!
不要加else!!!
之前的写法(加else)插入一条链然后依次删除就会出问题(多手动模拟几次)。
insert(0);
insert(0);
......
insert(0);
insert(1);
remove(0);
remove(0);
......
remove(0);
上面那个还是假的!!!
。。。。。。
应该加else,然后再加一个rotate(x)。

浙公网安备 33010602011771号