挂分小技巧:
关于空间
- 无向图没开双倍空间
- 环形 \(dp\) 没开双倍空间
- 维护序列插入没开大空间
- \(manacher\) 没开双倍空间
- 线段树合并开四倍空间
应是logn倍空间
- \(kruskal\) 重构树没开双倍点空间
- 扫描线算面积并开四倍空间
应是16倍空间
关于数学题
- 快速幂底数没取模爆
long long
- 对快速幂指数取模
- 取模没消负号
- \(10^8\) 用埃氏筛
应用欧拉筛
- \(\div 0\) 或 \(\times 0^{-1}\)
- 用
abs 取小数绝对值
- 对不参与答案计算的数取模
- \(mod<n,m\) 时未使用 \(Lucas\) 定理求 \(C(n,m)\)
- 当 \(n>mod\) 时仍然用预处理阶乘求 \(C(n,m)\)
- 求组合数时尝试用 \(\times 0^{-1}\) 消去 \(\times 0\)
关于 \(dp\)
- 计数 \(dp\) 没开
long long
- \(dp\) 省去一维后没有反向
- 区间 \(dp\) 的断点 \(k\) 取到了 \(r\),导致 \(k+1>r\)
- 滚动数组不清空
- 单调队列优化
l++ 和 r-- 前没判 l<=r
- 断环成链遍历 \(1\sim 2\times n\)
要-1
- 有负数的 \(dp\)
memset(dp,0,sizeof(dp));
- \(dp\) 转移没判掉 \(inf\) 导致统计答案时
!=INF 的条件失效
- 以为 \(bitset\) 的
<< 和 >> 复杂度是 \(O(1)\)
- \(10^9\) 的数值赋
0x3f3f3f3f 的 \(inf\)
关于图论
- 用大顶堆跑 \(dijkstra\)
- 用 \(dijkstra\) 求最长路
- 差分约束边建反
- 树剖建的线段树从
root 开始 build
- 双向边删边不删反向边
- 对最大流反悔边流量赋 \(-w\)
- 对费用流反悔边费用赋 \(0\)
- \(floyd\) 按 \(ijk\) 循环
应是kij
- \(dijkstra\) 在第一次入队时标记 \(vis\)
- 树上差分不特判
fa[lca]!=lca
- 双向边改边权不改反向边
关于数据结构
- 栈没放标兵
- 对空 \(vector\) 取下标 \(size-1\)
- \(1\sim n\) 遍历 \(vector\)
- 扫描线算面积并直接将原区间作为线段树对应区间
- 把默认堆(大顶堆)当成小顶堆
关于字符串串
getchar 读回车
- 拓展 \(kmp\) 没清空 \(z\) 数组
- 哈希值加法 \(\% 131\)
关于其它算法
- \(check\) 函数内一种情况不行直接
return 0
- \(DLX\) 的
recover 和 remove 同向遍历
- 坐标为 \(0\) 的二维前缀和没 \(+1\) 处理
- 对只有一个数的数组差分
- 随机化没
srand
关于未定义报错
- 数组轻微越界导致未定义的 \(WA\)
- 数组严重越界导致未定义的 \(TLE\)
- 没开
long long 导致未定义的 \(RE\)
关于打比赛
关于其它
- 多测不清空
- 宏定义不加括号
- 位运算不加括号
- 重载 \(>\)
- 开数组 \(a[M][N](M<N)\)
应是a[N][M]
- 不备份会被修改的数组下标
posted @
2023-08-23 20:00
Mo默Sh笙
阅读(
67)
评论()
收藏
举报