UPD:
Splay如果初始化一些特殊或边界节点,一定要把所有的数组sz,par什么的处理好
UPD:
1ex是$double$类型尽量用的时候考虑强制转化一下,防CE
UPD:
写凸包,判弹栈时要有'==0'
分治合并,排序不要忘了$y$。
UPD:
懒标记下传写错真的很$sb$
UPD:
关于双旋
正确:
1 inline void splay(int x){ 2 int y=x,top=0,z=0; 3 while(!isroot(x)){ 4 y=par[x],z=par[y]; 5 if(!isroot(y))rotate(chk(x)==chk(y)?y:x); 6 rotate(x); 7 } 8 return ; 9 }
错误:
1 inline void splay(int x){
2 int y=x,top=0,z=0;
3 while(!isroot(x)){
4 y=par[x],z=par[y];
5 if(!isroot(y))rotate(chk(x)==chk(y)?y:x);
6 else rotate(x);
7 }
8 return ;
9 }
UPD:
最后检查还是发现了低错,改的时候手一抖,又写错辣。
取位运算和当前位的0,1比,而不是和原数比,话说除了这个情况其他类似的明明都写对了
正确写法:
我丢掉的35pts啊
UPD:
yu这个变量已经成$0$,才用他算$js$,显然是错的,导致$RE$丢掉$30pts$。
当然如果有好习惯都可以避免:
1>
过程中注意判下边界,万一避免低错了呢
2>
把暴搜数组开大,尽管这并不严格,但在程序中,内存是连续的,原数组不够可能会使数组指针扫到暴搜数组并使用。
如果题目不卡空间,把数组开大一点还是没坏处的。
UPD:
位运算的优先级最低要加括号
不是所有数据都有1
down放在判断上面数组就不能开MAXN*4
二维树状数组第二维是每一个p1都来一遍,不能像p1一样写
UPD:
WA0与AC的区别
到
UPD:
下标判负
WA30
T60
UPD:
原来做线段树进阶专题时就出现过这种状况,其实错点就一个,因为叶节点的信息全在叶节点,他是没有儿子的如果写成两个儿子合并的形式会错,但对非叶子节点或合并的两个树没有表示同一个区间的叶节点没有影响。
UPD:
注意取模
UPD:
平常没在意的错误还是付出了WA0的代价
不过话说函数没返回值为啥数据还能过?对拍没拍出来。
以后尽量做到连void也写return,O2可以验出此错
UPD:
在set中删迭代器时,先找到下一个,再删除原来那个