A. 食物链
在拓扑序上dp。
B. 选点游戏
要求支持合并两棵树,并同时维护树上最大独立集。
考虑特殊情况,每次只加一个标号最大的点,问题是一个简单的动态dp。
离线出最终树的形态,考虑加入的一个叶子节点,更新该节点到1号节点的轻链上信息就可以了。
其实想到这里,一个动态dp的做法已经很显然了,但是考试时仍然没有想到。
仍然维护出原树的形态。
每次的操作是合并两个联通块,也就是合并一对父子。
实际上只要将子节点处的信息更新到父节点直到父节点同连通块的祖先路径上的轻链就可以了。
因为每条重链的链顶、链底是变化的,一个可行的做法是使用并查集维护每条重链的信息。
C. 随机
记录一些有意思的东西:
1.$n$个大小在$[1,n]$之间的随机变量的最小值的期望。
将最小值为$x$转化为最小值大于等于$i$(1<=i<=x)的概率的加和。
于是问题转化为0/1变量,而$n$个0/1变量,每个变量为1的概率为p,其中均为1的概率是$p^n$。
当然直接通过另一个办法计算最小值为$x$的方案数也是可行的。
2.随机筛法取得的数的个数。
对于每一个数$x$,被选中的条件是任何一个约数都没有被选中,所以这个数对期望的贡献是$\frac{1}{d(x)}$。
原文地址:https://www.cnblogs.com/skyh/p/12241200.html
时间: 2024-10-08 08:55:04