ARC150D - Removing Gacha (树上期望)
题意: 给一棵 \(n\) 个节点的树,称一个点是好的,当且仅当它到根的路径上都是黑色(包括自己)。每次在不好的节点中随机选一个把它涂成黑色(不管原来它是否是白的),直到所有点都是好的为止。求期望涂色次数。
原题题解 \(O(n\log n)\) 乐傻了,以下是 tester's solution
令 \(X_u\) 为 \(u\) 被选的次数,则我们只需要求 \(\sum E[X_u]\)。发现考虑 \(E[X_u]\) 时,只有 \(u\) 及 \(u\) 的祖先需要关心,其余可以一律忽略。
设 \(u\) 的深度为 \(k\),则问题变成了:现在有 \(k\) 个点排成一排,每次选一个前面不都为黑色的点涂黑,直到所有点都被涂黑为止,求最后一个点被涂黑的期望次数。
利用鞭尸技巧,并注意到最后一个点涂黑永远都是合法的直到整个过程结束,于是以上问题等价于:现在有 \(k\) 个点,每次选一个点涂黑,直到所有点都被涂黑为止,求最后一个点被涂黑的期望次数。
所有点都被涂黑的期望次数为 \(\sum_{i=1}^k {k\over i}\),而此时所有点地位相同,所以最后一个点被涂黑的期望次数为 \(\sum_{i=1}^k {1\over i}=H_k\)。
答案即为 \(\sum_{u=1}^n H_{dep_u}\)。时间复杂度 \(O(n)\)。