zoukankan      html  css  js  c++  java
  • CF1060F

    题意见 (link)

    Solution

    先枚举根为 (mathbf{root})

    类似的,我们将 "删边" 视为合并两个点,如果其中存在 (u) 所在的连通块,那么产生 (frac{1}{2}) 的贡献。

    (f_{u,i}) 表示考虑以 (u) 为根的子树,所有可能的删边序列,仅考虑最后 (i) 条边的情况下的贡献和,答案即 (frac{f_{root,n-1}}{(n-1)!})

    考虑计算答案,现加入一条 (u o v) 的边,这样我们需要枚举这条边是第倒数 (j) 条被合并的边,同时考虑转移得到 (f_{u,i})

    1. 假定 (jle i),那么我们发现在 (j) 之前合并的边都对答案没有影响,所以有贡献的仅为最后 (j-1) 条边,故 (f_{u,i}leftarrow f_{v,j-1} imes frac{1}{2})
    2. 假定 (j> i),那么这条边对答案没有贡献,且有贡献的只有最后 (i) 条边,故 (f_{u,i}leftarrow f_{v,i})

    我们令 (g_i) 表示只考虑这棵子树时的 (f_{u,i})

    现在考虑合并两颗子树的答案,我们只需要枚举最后 (i) 条边来自此子树的边的数量,令 (i'=i+j),那么不难得到:

    [f_{u,i'}leftarrow inom{i+j}{i}inom{e_v+e_{bef}}{e_v}g_{i}f_{u,j}' ]

    这个部分的复杂度是 (mathcal O(n^2)),预处理 (g_i) 的复杂度可以做到 (mathcal O(n^2)) 的,总体复杂度应该(mathcal O(n^3)) 才对吧。

    实现的不好就 (mathcal O(n^4)) 了,具体随便。


    u1s1 这个状态真的想不到啊 TAT

  • 相关阅读:
    开学测试感想
    动手动脑1(00JAVA语言基础)
    9.29 java web注释方式以及servlet映射
    三十道随机算法
    9.30 servlet学习
    C#验证控件的使用方法
    SqlHelper详解
    C#字符串的几种常用方法
    存储过程事务处理
    js url编码
  • 原文地址:https://www.cnblogs.com/Soulist/p/13709134.html
Copyright © 2011-2022 走看看