如题,专门总结一下本身犯过的错误,引觉得戒spa
1.偷懒使用#define int long long的时候,绝对要放在代码上方,绝对要放在读优上方!!!debug
2.在机房等地写代码时(特别是比赛时)要开代码警告字符串
3.比赛时上交代码以前要再仔细检查文件流、子文件夹、以及有没有手贱打上什么奇奇怪怪的东西,代码修改了必定要保存,debug完后的代码必定要备份!!!(NOIP2018的惨痛教训)qt
4.数学题卡常的时候,不妨尝试把mod从longlong改为int(若是不wa的话)数学
5.用拓展欧拉定理的时候,必须在b>=mod时才$+\phi(mod)$,不然会错hash
6.一个字符串若是有循环节长度为x,则$hash(l+x,r)=hash(l,r-x)$it
7.fhqtreap merge和split的时候,注意相对位置(好比在整个子树的第k+1大,分裂成前k大和剩余的数,在剩余的数里面再split一次是分裂成第一大和剩余的数!!!)循环
8.fhqtreap 按位置merge和split的时候,要注意相对位置(好比split(root,x,y,k)以后merge(root,x,y)而不能merge(root,y,x))迭代器
9.fhqtreap 在须要求max或者min的时候,必定要把root的val和mx/mn设成inf/-inf!!!bug
10.set&&multiset erase的时候删的是一个位置,不是一个数,删一个数时要先find一次判在不在,而后再删掉find那个迭代器!!
11.fhqtreap按权值分裂,split的时候是判当前节点权值若是大于v就分离左子树... 即if(v<=t[rt].v) r=rt, split(lc,l,lc,k),up(rt);