目录
- 算法相关
- \(\text{stl}\) 相关
(随时补充)
- 杂项
- 数学
1. 算法相关
1. 并查集
- 种类并查集处理关系时一定要考虑全面(比如天敌关系不成立有是同类和捕食两种情况)。
- 合并时要用根节点。
- 种类并查集空间开几倍。
- 带权并查集
px (father)不要和 x 写串。
- 合并一定要是两个
find 后的合并。
2. 二分
check 想好返回值是什么。(什么时候是成立)
- 实数二分穿 check 参数记得不要穿个 int。
3.DP
- 更新时注意能否使用一个元素更新当前元素,某些值看似可以用来更新,但实际上是有矛盾点在的,比如 P1399 [NOI2013] 快餐店 中,不可直接使用
a[i] 更新 b[i]。
4. 高精度
- 注意写法
- 位压写法输出时注意
%04lld。
5. 缩点
- 记得将原本的编号变成缩点后的编号(点)。
6. LCA
- 倍增 lca 要遍历到零,
for(int i = 17;i >= 0;i -- ),如果写成 i >= 1 会死得很惨。
7. 线段树
tag 记得和 t 开一样空间。
tag 尽量赋成 -1,以防 tag[k] = 0,但是需要操作的情况。
- pushdown 记得清 tag。
8.树剖
dfn 的记录要在 dfs2 中进行。
2. \(\text{stl}\) 相关
next_permutation 要先 sort。
map 和 unordered_map 判断元素有无用 count,如果直接 map[x] 会涉及 map 内元素是否为 0 的问题。
3. 杂项
- 部分开
long long时,如果有 long long 和 int 的运算要记得将 int 转化为 long long。 (1ll * )
- 不要写
int 类型的函数不返回值,会 TLE。
- 在循环内进行统计时, 应考虑有无在中间
continue 或 break 的情况。
double 不要 memset,也不要 f[i]=-0x3f3f3f3f。
- 一定要写
cin 优化。
- 记得看数据范围开
long long!!!!!
- 记得
cin 优化。
- 当键值对中键较大时,map 复杂度优于 unordered_map。
int * int * long long 前两个可能炸 long long。
- 离散化的时候,如果涉及到差分,那么右端点要按照 r+1 差分。(例题:CF863E Turn Off The TV)
- 写 spfa 的时候要记得 dis 赋极大值。
- 可以写一个
init(),然后 return init(); 来初始化,最好多测前后都清空。
- 结构化绑定不要引用定义一个会被销毁的变量,尽量少用引用吧。(比如说
auto &[x, y] = q.front(); q.pop(); 然后因为是引用所以直接空掉了)。
4. 数学
1. 排列组合
- 要处理 0 的阶乘和逆元(重点)。
- 数据量较大时,阶乘处理组合数可能会比较慢。如果可以,使用递推求组合数。
posted @
2025-09-16 19:47
yanbinmu
阅读(
7)
评论()
收藏
举报