至于如何计算每个点比父亲多出的贡献,也是好计算的。赛时多写了一个 DP,f(u,i) 表示 u 子树内距离 u 为 i 的点的数量。实际上不用这么复杂,可以直接 dfs 一遍预处理。
那么背包状态就是,g(u,i) 表示根到 fa_u 路径上点全部填 1,u 子树内选了 i 个点填 1多出的最大贡献。
Code
T3. 逻辑推理
T4. 污水博弈
设某个区间的污水高度为 x,选到这个区间的概率为 P,序列一共分成 i 段,能出现该区间的划分方案数为 Q,那么它对期望的贡献为:
P \cdot x = \frac{Q}{2^{n-1}} \cdot \frac{1}{i} \cdot x
[Code - $O(n^3)$](https://www.luogu.com.cn/record/229925158)
[Code - $O(n^2)$](https://www.luogu.com.cn/record/230111898)