Trick合集

发布时间 2023-07-09 08:41:03作者: Semorius

一些小 trick

  1. 对两个集合的点两两连边时,除了线段树优化建图,还可以建一个虚点连接两个点集,把边数降成线性

  2. 有些数列的区间操作重复若干次后不再产生影响,比如区间开根,区间取模

  3. 树上点集 lca 等价于点集中 dfs 序最小、最大的点的 lca

  4. \(\text{Hash}\) 思想配合随机判断一些东西是否相同

  5. 矩阵加速dp转移

  6. 普通图上dp:①用SPFA转移解决后效性问题;②记忆化搜索;③高斯消元

  7. 减少对无用状态的统计与枚举

  8. 在线复杂度较高时考虑离线怎么做

  9. 树上问题先考虑链和特殊情况怎么做

  10. 计数问题直接按题意统计复杂度较高时,考虑拆解成多部分的贡献,或单个元素对答案的贡献

  11. 树上背包 \(O(n^3)\) 优化至 \(O(n^2)\) -> 详解

  12. 线段树套分块优化时间空间

  13. 扩展域并查集判定二分图

  14. 范德蒙德卷积:

\[\sum_{i=0}^{k}\binom{n}{i}\binom{m}{k-i}=\binom{n+m}{k} \]

  1. 来源:abc295E

In general, for a probability variable X that takes an integer value between 1 and M,

\[\text{(expected value of X)} = \sum_{i=1}^{m} (i \times \text{(probability that X = i)}) = \sum_{i=1}^m (\text{probability that} X \ge i) \]

  1. 枚举一个数 \(x\) 的二进制子集:
for(int S = x; S; S = (S-1)&x)