[cf1153f]Serval and Bonus Problem

  • 题目链接

    cf1153f

  • 题目大意

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

    \(998244353\) 取模。

    \(1\le k\le n\le 2000,1\le l\le 10^9\)

  • 题解

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

    不妨设 \(l=1\)

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

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

    然后我们直接积分:

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

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

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

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

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

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

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

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

    \[\sum_{j=0}^{i-k}(-1)^j\binom{i}{j}\\ =\sum_{j=0}^{i-k}(-1)^j\left(\binom{i-1}{j}+\binom{i-1}{j-1}\right)\\ =\sum_{j=0}^{i-k}(-1)^j\binom{i-1}{j}-\sum_{j=0}^{i-k-1}(-1)^j\binom{i-1}{j}\\ =(-1)^{i-k}\binom{i-1}{i-k} \]

    所以

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

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

posted @ 2021-03-16 22:23  leukocyte  阅读(82)  评论(0)    收藏  举报