emmmm。。。数据结构的大码量经常死在一些小错误上(比如一个字母,等号),然后导致一查查半年。这里汇总一下错误吧。
1、线段树操作进行二分操作时,mid用的是当前块的左右区间(t[p].l),不是查询区间的lr,错过几次
2、树剖中,(好吧其实还是线段树),向下递归,第二个判断区间相交的if不能用else代替。
if(mid>=l)
res+=ask(l,r,t[p].ls);
if(mid<r)
res+=ask(l,r,t[p].rs);
3、树剖的计数器很烦。。。根节点是0(坑惨了),然后的计数(build里)从1开始,然后建树的时候计数器++(或者直接++计数器)。。。
t[x].ls=++num;
t[x].rs=++num(num=0);
num=1;
t[x].ls=num++;
t[x].rs=num++;
4、记得当年翟哥因为把“==”打成“=”整整改了三天