OI相关的各种技巧

卡常技巧:

1.能用 ++ a 就不用 a ++
2.用inline
3.快读快写 或 cin/cout + ios
4.开多维数组把小的维度放前面,例:int f[10][10000];
5.能用位运算不用加减乘除


其他技巧、注意事项、防踩坑:

1.背包问题中,取最大值变为取最小值时,只需要递推数组初始化为正无穷,再将 \(max\) 函数改为 \(min\) 函数即可,枚举顺序都不需要变
2.费用流中,取最小费用变为取最大,只需要将所有边的费用取负,求最小值后再取负即可
3.无向图中求出生成树后,任意一条边,若不为树边,则会与树上连接此边两个端点的路径构成环
4.树上DFS序的神奇性质:在一个树上,给定一组点后,将它们按DFS序排序,排完序后相邻两个点之间的路径上的点数(不算这两个点)相加(以及第一个点和最后一个点),这就是这些点间路径总点数的二倍(重复的只算一次,不算这些给定的点)
5.树上一个点 \(A\) 是点 \(B\) 的祖先的充要条件是 \(A\) 在DFS序中处在 \(B\) 前,且在DFS序中搜索结束位置在 \(B\) 后(说白了就是 \(A\) 的搜索树包含了 \(B\)

posted @ 2022-12-04 12:29  LGyxj  阅读(52)  评论(0编辑  收藏  举报