不小心磕々绊々の全球流[手白错误合集]

[数据结构]

左偏树

1.左偏树merge函数当左儿子的dis小于右儿子的dis时应该swap(lson[x] , rson[x]),写成swap(dis[lson[x]] , dis[rson[x]])。

set

1.set中的begin()end()是不一样的,begin()有值end()为空

平衡树

1.splay的时候注意哨兵节点的存在,所以在进行区间操作是把哨兵节点的位置出来

2.非旋转Treap中的split,return的pair并不是撕裂id的make_pair(id,id+1),而是make_pair(id,root)。

KD-Tree

1.KD-Tree中的查询近邻点对的时候query函数一定要写else,不然会T。是if(dl<dr){.......}else{.......},而不是if(dl<dr){.......}.........。

LCT

1.LCTupdate中写成了while(!isroot(p)) update(f[p]),应该是if(!isroot(p)) update(f[p])

并查集

1.并查集三目运算符应写成 fa[x]==x ? x : (fa[x]=find(fa[x])),写成了 fa[x]==x ? x : (fa[x] == find(fa[x]))。

线段树

1.在树剖序上建立线段树的时候,在退出时一定要记得:当前的l不一定是原来树上结点的点权下标

主席树

1.主席树区间查询的时候传的变量不仅仅是x-1,y,而且是root[x-1]root[y]!

[树上问题]

1.树的给father建边的方式,循环从1循环到n-1,加边应该是add(fa,i+1,value),写成add(fa,i,value)。

树的直径

1.在求树的直径的时候如果用的是维护一个点的最长链次长链,那么不一定只在根节点更新答案每一个点都会更新答案

树链剖分

1.在树剖序上建立线段树的时候,在退出时一定要记得:当前的l不一定是原来树上结点的点权下标

[图论]

Dijkstra

1.堆优化Dij中,如果采用懒删除的方法是不可以用vis记录的!

1.单向边等价于双向边时虽然两条单向边的权值相等,但是开链式前向星val数组仍然要开成val[N<<1],而不是val[N]。

[数学]

概率期望

1.期望的平方不等于平方的期望...

博弈论

1.博弈论中,求mex的vis数组不可以开全局变量的!!!

[动态规划]

斜率优化

1.斜率优化的时候注意在判断斜率的时候用交叉相乘的办法,尽量避免double的相除时间和精度问题。而且极其之慢,至少两倍卧槽啊... ...

状压dp

1.状压+记忆化暴搜时记得要考虑all状态的时候是否一定合法,如果不合法需要再暴搜退出的时候特判。

[网络流]

1.网络流dinic模板中的mdl=dinic(to[i],min(val[i],tmp))中间的是tmp而不是fl

[算法]

整体二分

1.往下递归的时候,操作数组并不是从1开始

[]

1.考试时define 了一个1000100 ,然后before数组开的是before[N/1000],导致实际上before开的是before[1000],使得before[1000]这个数没有定义,而且这个数组的用途数预处理阶乘,直接Gg

2.比如说题目中有2问,或者是输出多个数据的时候,记得注意输出数据之间的格式。应该是空格还是\n还是tab,不然会PE啊。(模拟赛T2爆蛋)

3.将询问离线了、排序了之后记得按照询问的顺序排回来,不要按照离线后的顺序直接输出

posted @ 2018-04-17 19:08 JZYshuraK_彧 阅读(...) 评论(...) 编辑 收藏