tricks + interesting 性质 + 血泪教训(
注意力惊人
-
注意到树是一个二分图。
-
注意到 \(a\oplus b\le a+b\)。
tricks?
-
有时候可以尝试二分最后的答案,把不好维护的东西变成 \(0\) 和 \(1\)。【P2824 排序】
-
可以很好维护静态询问但是需要支持修改的情况可以尝试将操作分块维护(?)。【P5443 桥梁】
-
dp 有后效性但影响范围很小可以考虑把后续决策压缩起来当成一维。P2157 学校食堂
-
当前决策对后续的影响固定但不好从后续推过来可以把费用在此时计算。【P2365 任务安排】
-
\(a_i\) 严格递增不好做可以考虑所有 \(a_i\gets a_i-i\),限制变为严格不降。【CF713C Sonya and Problem Wihtout a Legend】
-
从小到大填字典序出问题了可以考虑倒着从大到小填字典序。【CF825E Minimal Labels】
-
维护出现次数的平方考虑拆贡献,即多出现一次对答案的贡献。可以拓展到维护其他东西。【CF802I】Fake News (hard)
-
求树上两个路径的交时,先对两个路径的端点两两取 lca,然后取深度最小的两个点作为新路径的两个端点,如果新的端点深度小于原来两个路径的 lca,代表路径无交。【HDU-6110 路径交】
-
\(g=\gcd(a_l,a_{l+1},\cdots,a_r)\) 随着 \(r\) 的增大最多只有 \(\log n\) 个不同的取值。[【P9032 Neboderi】(https://www.luogu.com.cn/problem/P9032)]
-
期望题式子带平方一定要拆平方!!!【ABC277G Random Walk to Millionaire】
-
\(\sum dep_{lca(x,y)}\) 可以把所有 \(1\) 到 \(y\) 的路径加一,然后查询 \(1\) 到 \(x\) 的路径和。来源某场模拟赛。
-
对经过的边的起点有限制可以从终点反着来。【CF1407 Egor in the Republic of Dagestan】
-
期望题(某些 dp 题)可以把状态设为到达终点状态还要多少花费。
-
SAM、ACAM 等可以结合线段树合并。【CF666E Forensic Examination】
-
lca 可以通过预处理做到 \(O(n\log n)-O(1)\)。具体地,st 表预处理一段 dfs 序区间中深度最小的点的编号,令查询节点为 \(x,y\),特判 \(x=y\) 的情况后,答案为 \(fa(st[dfn_x+1,dfn_y])\)。
教训
-
石堆:做撤销的时候一定要从后往前撤销。
-
无根树哈希时把子节点按哈希值排序再做。
树的重心
在一个无根树中,以重心为根,该树最大子树的节点最少。放一些链接。