• CF1153F Serval and Bonus Problem


    题目描述

    (quad) 传送门


    题解

    (quadullet) 这个题目比较牛逼,稍微写点东西。

    (quadullet) 发现这个题目样例解释使用积分的,所以我们也用积分做。

    (quadullet) 我们发现可以认为左右端点是在 ([0,1)) 内随机,最后把答案乘以 (l) 即可。

    (quadullet) 考虑一个点 (x in [0,1)) 被覆盖至少 (1) 次的概率 (p(x)),则 (p(x) = 2x(1-x))

    (quadullet)(f(x)) 代表点 (x) 被覆盖至少 (k) 次的概率,那么 (l imes int_0^1f(x) ext{d}x) 就是答案。

    (quadullet) 显然可以得到

    [f(x) = sumlimits_{i=k}^n{n choose i}p(x)^i(1-p(x))^{n-i} ]

    (quadullet) 考虑算上面的积分

    [int_0^1f(x) ext{d}x = int_0^1sumlimits_{i=k}^n{n choose i}(2x(1-x))^i(1-2x(1-x))^{n-i} ext{d}x ]

    [= sumlimits_{i=k}^n{n choose i}int_{0}^1(2x(1-x))^i(1-2x(1-x))^{n-i} ext{d}x ]

    [= sumlimits_{i=k}^n{n choose i}int_0^12^ix^i(1-x)^isumlimits_{j=0}^{n-i}{n-i choose j}(-1)^j2^jx^{j}(1-x)^{j} ext{d}x ]

    [=sumlimits_{i=k}^n{n choose i}sumlimits_{j=0}^{n-i}{n-i choose j}(-1)^j2^{i+j}int_0^1x^{i+j}(1-x)^{i+j} ext{d}x ]

    [=sumlimits_{i=k}^n{n choose i}sumlimits_{j=0}^{n-i}{n-i choose j}(-1)^j2^{i+j}frac{(i+j)!(i+j)!}{(2(i+j)+1)!} ]

    [= n!sumlimits_{i=k}^nsumlimits_{j=0}^{n-i}frac{1}{i!}frac{(-1)^j}{j!}frac{2^{i+j}(i+j)!(i+j)!}{(2(i+j)+1)!(n-(i+j))!} ]

    [=n!sumlimits_{t=k}^{n}h_tsumlimits_{i=k}^tf_ig_{t-i} ]

    (quadullet) 其中

    [f_i = frac{1}{i!},g_i = frac{(-1)^i}{i!},h_i = frac{2^i(i!)^2}{(2i+1)!(n-i)!} ]

    (quadullet) 上面积分的过程中用到了 (Beta) 函数,即

    [B(alpha,eta)= int_0^1t^{alpha-1}(1-t)^{eta-1} ext{d}t = frac{(alpha-1)!(eta-1)!}{(alpha+eta-1)!} ]

    (quadullet) 上面式子可以直接 (mathcal O(n^2)) 计算,或者用 ( ext{NTT}) 优化到 (mathcal O(nlog_2n))


    (Large mathbf{后话})

    (quadullet)(mathrm{OI}) 里面出这种积分题真的好吗?是不是有点偏了?

  • 相关阅读:
    java——阶段性整理(方法的重载重写和一些关键字)
    设计模式——单例模式
    source
    set和setenv
    c++编译加执行脚本
    python脚本小记
    转义字符
    istream_iterator/ostream_iterator
    字符串替换程序 p324
    程序编译后运行时的内存分配
  • 原文地址:https://www.cnblogs.com/jvruotyy/p/14006396.html
Copyright © 2020-2023  润新知