- 每个节点初始为红色或黑色。
- 每次选择某个 node a,均匀随机选择 a 的一个相邻 node b,将 a 的颜色变为 b 的颜色。
- 求使整棵树染成红色的次数的最小期望。
- 期望复杂度 O(NlogN)。
状态:
- fu,0:以节点 u 为根的子树,父节点未染,完成目标所需次数的最小期望。
- fu,1:以节点 u 为根的子树,先染父节点,完成目标所需次数的最小期望。
转移:
若 u 初始为红,
fu,0=fu,1=c∈children(u)∑fc,1
若 u 初始为黑,为将节点 u 染红,设 u 有 k 个红色邻居,成功概率为 deg(u)k,期望操作次数是 kdeg(u)。
fu,0=∅=S⊂children(u)min⎩⎪⎨⎪⎧∣S∣deg(u)+c∈S∑fc,0+c∈children(u)∖S∑fc,1⎭⎪⎬⎪⎫
fu,1=S⊂children(u)min⎩⎪⎨⎪⎧∣S∣+1deg(u)+c∈S∑fc,0+c∈children(u)∖S∑fc,1⎭⎪⎬⎪⎫
处理方程的后半部分,
c∈S∑fc,0+c∈children(u)∖S∑fc,1=c∈children(u)∑fc,1+c∈S∑(fc,0−fc,1)
若固定 ∣S∣=i,则贪心选取 (fc,0−fc,1) 最小的 i 个。先排序,然后枚举 ∣S∣ 转移。
当树的根是 X 时,回答编号为 [L,R] 的节点的 LCA。
【结论 1】根节点为 1 不变时区间 LCA:等价于区间 [L,R] 中 DFN 最小值和最大值对应的两个点的 LCA。
【结论 2】根节点为 X 不变时 U,V 两点的 LCA:是 LCA(X,U)、 LCA(X,V)、 LCA(U,V) 深度较大的。