低级错误总结

前言

  虽说,成大事者不拘小节,但是,细节决定成败!

数据结构

  1. 树链剖分预处理的dfs1和dfs2函数内部递归不要写成dfs

  2. 线段树加法标记在计算的时候要乘上区间长度:sum(son)=add(p)*(r(son)-l(son)+1)

  3. 树链剖分常规操作函数里面线段树节点从1开始,而不是题给的root

  4. 线段树空间开四倍

  5. 无向图空间开两倍

  6. 不要忘记init()初始化(尤其是前向星的h数组!)

  7. 初始化中有n的需要先读入再初始化!

  8. 树链剖分dfs1中每次循环末尾不要忘记size[p]+=size[to]

  9. 主席树query函数中递归时与k比较大小的并不是mid

  10. unique函数返回的是去重后末尾元素的下一个位置,求元素个数时若下标从1开始则通常减去(数组名+1)

  11. lower_bound返回第一个大于等于x的位置,减去数组名即可

  12. upper_bound返回第一个大于x的位置,减去数组名即可

  13. 常规线段树区间查询和区间修改操作中递归时将[l, r]整个区间递归,而非分成左右两个子区间

原文地址:https://www.cnblogs.com/ninedream/p/12863539.html