• [NOI2012]迷失游乐园


    题解:


    这题不像一般的dp题难在思维。。大概代码细节多一点吧

    首先 考虑链,那么就是枚举每个点,o(n)

    然后 考虑树

    其实问题就是计算每个点出发的期望路径的平均值

    考虑树形dp

    令f[i]表示i向下走的期望路径,这个显然从根dp一次就可以了

    令g[i]表示i向上走的期望路径,此时,记w[i]表示从i走的路径总和(w[i]/n=期望路径,其中n等于它的度)

    这时g[i]=(w[fa[i]]-f[i]-v[fa[i],i])/(n-1)+v[fa[i],i]

    这样每个点的期望路径就可以o(1)求了

    再考虑环上

    其实这题环上基本和树上差不多

    容易发现环上只有20个点

    那么令每个点代表一棵树的树根

    然后o(20)枚举从哪个点伸到环中

    之后分别做它逆时针走和顺时针走

    到达一个新的节点的时候,我们会发现有1/n的概率继续走,这个继续dfs算就可以了

    令外就是往它的子树中走

    这一部分可以预处理出来

    f[i]=(sigma|i=1,n-2|f[son[i]]+v[i,son[i]])/n-1

  • 相关阅读:
    Markdown语法
    BASH 特性和快捷键
    jstl标注标签库
    搭建以太坊私网
    spring-装配bean
    java语法糖
    centos7 安装jdk、Tomcat
    合约实战,代币合约,DAPP开发
    solidity数据类型
    solidity合约面向对象
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/8687050.html
Copyright © 2020-2023  润新知