zoukankan      html  css  js  c++  java
  • [cf1153f]Serval and Bonus Problem

    • 题目链接

      cf1153f

    • 题目大意

      在长为 (l) 的线段上均匀随机 (n) 条线段,求被至少 (k) 条线段覆盖的期望长度。

      (998244353) 取模。

      (1le kle nle 2000,1le lle 10^9)

    • 题解

      提供一个 (mathcal O(n)) 的做法。

      不妨设 (l=1)

      考虑每个点被覆盖的概率,显然有:

      [p_x=sum_{i=k}^ninom{n}{i}(2x(1-x))^i(1-2x(1-x))^{n-i} ]

      然后我们直接积分:

      [Ans=int_0^1sum_{i=k}^ninom{n}{i}(2x(1-x))^i(1-2x(1-x))^{n-i}dx\ =sum_{i=k}^ninom{n}{i}int_0^1(2x(1-x))^isum_{j=0}^{n-i}inom{n-i}{j}(-1)^j(2x(1-x))^{j}dx\ =sum_{i=k}^ninom{n}{i}sum_{j=0}^{n-i}(-1)^jinom{n-i}{j}2^{i+j}int_0^1x^{i+j}(1-x)^{i+j}dx ]

      然后我们发现后面是一个 (Beta) 积分,所以可以化成:

      [Ans=sum_{i=k}^ninom{n}{i}sum_{j=0}^{n-i}(-1)^jinom{n-i}{j}2^{i+j}B(i+j+1,i+j+1) ]

      其中 (B(x,y)=frac{(x-1)!(y-1)!}{(x+y-1)!})

      然后注意到 (inom{n}{i}inom{n-i}{j}=inom{n}{i+j}inom{i+j}{j})

      所以我们可以先枚举 (i+j) ,那么有:

      [Ans=sum_{i=k}^ninom{n}{i}2^iB(i+1,i+1)sum_{j=0}^{i-k}(-1)^jinom{i}{j} ]

      基本上所以题解到这就直接将式子展开做卷积,但实际上,我们有:

      [sum_{j=0}^{i-k}(-1)^jinom{i}{j}\ =sum_{j=0}^{i-k}(-1)^jleft(inom{i-1}{j}+inom{i-1}{j-1} ight)\ =sum_{j=0}^{i-k}(-1)^jinom{i-1}{j}-sum_{j=0}^{i-k-1}(-1)^jinom{i-1}{j}\ =(-1)^{i-k}inom{i-1}{i-k} ]

      所以

      [Ans=sum_{i=k}^n(-1)^{i-k}inom{i-1}{i-k}inom{n}{i}2^iB(i+1,i+1) ]

      这样我们就能在 (mathcal O(n)) 的复杂度内解决问题。

  • 相关阅读:
    阿里云服务器常见问题记录
    npm 常见错误记录
    C程序设计(第四版)课后习题完整版 谭浩强编著
    博客如何快速让百度谷歌等各大引擎收录
    python itertools 用法
    python中dict的fromkeys用法
    python解析XML
    flask+uwsgi+nginx+docker-compose部署
    python的构建工具setup.py
    python判断字符串类型
  • 原文地址:https://www.cnblogs.com/leukocyte/p/14546366.html
Copyright © 2011-2022 走看看