【湖南集训 4.14】C

26 篇文章 0 订阅
2 篇文章 0 订阅

题目描述

给出一棵 n 个点,边权为1的树,节点皆为黑色或白色,随机起点,每一次你会从 n 个点中随机一个点x,从当前点走过去,并且将 x 反色。当所有点都为黑或白的时候停止。问期望经过路径的总长。

50%:n102
100%:n105


分析

这道题显然是用期望的线性性,但是怎么去拆就会有很大的不同。

首先有一个技巧就是一般来说贡献可以写成“期望次数 × 权值”的形式。

部分分

考虑拆成一对有序点对 (x,y) 间路径的期望贡献。
具体来说怎么去算呢?

那么我们这里只关心黑点情况以及当前在不在点 x 处,就可以写出转移了。
fcx,cy,bc,isx表示 x,y 的颜色分别为 cx,cy ,除 x,y 以外还有 bc 个黑点, isx 表示当前所在点是否为点 x ,这个状态下,(x,y)这段路径被经过的期望次数。(显然单独看经过次数这个角度任意的 y 都是等价的,因此我们这里并不强调y的不同)
那么接下来就是考虑这个状态下下一步转移到什么状态,记当前状态为 now

  • isx=1
    • 转移到一个普通点 y
      • y是白点,对 now 的贡献为 n2bcnfcx,cy,b+1,0
      • y 是黑点,对now的贡献为 bcnfcx,cy,bc1,0
    • 转移到自己, 1nf!cx,cy,bc,1
    • 转移到 y 1n(fcx,!cy,bc,0+1)

    同理不难写出当 isx=0 时的转移。
    对这些方程进行高斯消元就可以了,答案显然就是枚举任意一对有序点对计算贡献。

    正解

    考虑拆成从每个点出发的期望代价乘上到达每个点的期望次数。

    只要没结束的情况下,从一个点出发的期望显然就是所有点到它的距离和的平均数。

    而与期望次数有关系的,仅仅是当前局面的黑点数量。
    然后因为这道题目中高度的对称性,当黑点数量固定的时候,每个黑(白)点的期望经过次数时一样的(它甚至不与这个点是谁有关)。

    那么这里考虑这样子去设计DP。令 fi,0 表示有 i 个黑点时,黑点的期望经过次数。类似地定义fi,1表示白点期望次数。
    考虑转移

    fi,0=ninfi+1,0+i1nfi1,0+1n(fi1,1+1)

    分别表示到了一个普通白点,一个普通黑点,或者到了它自己,同理写出 fi,1 的转移

    fi,1=infi1,1+ni1nfi+1,1+1n(fi+1,0+1)

    但是注意,假如我们转移到一个终止态时,不要加一。因为它不再走出去了。
    由于开始时我们从随机一个点出发,我们需要将每个期望次数都加上 1n

    注意到这里转移既关于 i1 ,又关于 i+1 ,裸上高斯消元可以,但是复杂度难以接受,我们需要考虑更好的做法。

    首先我们有 f0,01 以及 fn,01 都是已知的 0
    移项,发现fi+1,0依赖于 fi1,01 fi,0
    fi+1,1 依赖于 fi+1,0,fi1,1,fi,1

    那么考虑将每一个状态都表示成 af1,0+bf1,1+c 的形式。
    fn1, 的时候,根据未移项的式子写出二元一次方程组,就可以解出 f1,01 ,接着递推回来我们就可以得到所有的 f

    至此,这道题目就做完了,是一道很不错的概率题。

    时间复杂度O(n)
    空间复杂度 O(n)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值