1 条题解

  • 8
    @ 2026-9-30 16:13:45

    染色(color)

    有 nn 个点的一棵树,一开始所有节点颜色为 00。

    有 mm 次操作,第 ii 次操作会在 [0,di][0,d_i] 中均匀随机选择一个数 rr,并将距离 xix_i 不超过 rr 的所有节点颜色染色为 ii 。

    求树上同色连通块数量期望。

    n,m≤2000n,m\le 2000 。

    先对答案做有转化:

    $$\begin{aligned}\mathbb E[同色连通块个数]&=1+\mathbb E[\sum_{e(u,v)}[c_u\ne c_v]]\\ &=1+\sum_{e(u,v)}\mathbb E[[c_u\ne c_v]]\\ &=1+\sum_{e(u,v)}\text{Pr}[[c_u\ne c_v]] \end{aligned}$$

    因此,我们只需要对于每一条边 e(u,v)e(u,v) ,求出其两端不同色的概率。

    依次考虑所有操作,对于操作 ii,我们想要更新 pe(u,v)p_{e(u,v)} 。

    那么对于每一条边 (u,v)(u,v) ,有如下三种可能:

    1. u,vu,v 均被覆盖,设概率为 P1P_1。
    2. u,vu,v 其一被覆盖,设概率为 P2P_2。
    3. u,vu,v 均未覆盖,设概率为 P3P_3。

    可以发现,新的 pe(u,v)p_{e(u,v)} 应该是这三种情况的带权和,所以我们要看这三种情况分别的权:

    1. 此时这一条边被强制覆盖,会产生 00 的贡献,因此这一项为 0×P1=00\times P_1=0。
    2. 此时这一条边一定会有 11 的贡献,因此这一项为 1×P2=P21\times P_2=P_2 。
    3. 此时这一条边不会产生任何变化,因此这一项为 pe(u,v)×P3p_{e(u,v)}\times P_3 。

    于是,我们只需要求出 P1,P2,P3P_1,P_2,P_3 ,就可以完成更新。

    我们当然可以暴力:枚举 r∈[0,di]r\in[0,d_i] ,然后直接模拟,从而获得 P1,P2,P3P_1,P_2,P_3 。复杂度 O(n2m)\mathcal{O}(n^2m) ,可以获得 50%50\% 的分数。

    不过我们有更聪明的方法:设 t=min⁡{dist(xi,u),dist(xi,v)}t=\min\{\text{dist}(x_i,u),\text{dist}(x_i,v)\} ,则情况 22 发生当且仅当 r=tr=t ,于是 P2=1di+1P_2=\frac{1}{d_i+1} ,情况 1,31,3 同理,分别为 P1=di−tdi+1,P3=tdi+1P_1=\frac{d_i-t}{d_i+1},P_3=\frac{t}{d_i+1} 。

    于是我们就可以在 O(nm)\mathcal{O}(nm) 的时间内解决此题(并且看起来可以优化到 O(mlog⁡n)\mathcal{O}(m\log n))。

    • @ 2026-10-1 13:02:53

      可恶,注意到当 t>dt > d 时,这一条边一定不会产生任何变化,因此 pe(u,v)p_e(u,v) 一定不变,代码只需加一行 if (t > d) continue;

      为什么,不啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵啵。

    • @ 2026-10-1 15:07:21

      @ 惊现 xt

    • @ 2026-10-5 21:10:26

      @ ?

  • 1

信息

ID
2765
时间
1000ms
内存
128MiB
难度
7
标签
(无)
递交数
19
已通过
8
上传者