CF1153F

CF1153F [* hard]

看上去挺有意思的一道题。

有一段长为 \(L\) 的线段,有 \(N\) 个区间,左右端点在 \([0,L)\) 间均匀随机(可能不是整数)

求在这条线段上,期望被至少 \(K\) 段区间覆盖的线段的长度,对 \(998244353\) 取模。

\(N,K\le 2000,L\le 10^9\)

\(\rm Sol:\)

先论证一个简单的结论,在一 \([0,1)\) 上随机选两个数得到的线段期望长度为 \(\frac{1}{3}\)

可以考虑每个点被覆盖的概率,此点被覆盖当且仅当两个数不在其同一边,那么对于 \(x\),其被覆盖的概率为 \(1-x^2-(1-x)^2=2x-2x^2\)

那么我们计算的期望其实就是 \(f(x)\) 的积分,于是 \(\int_{0}^1 f(x)=x^2-\frac{2x^3}{3}\),代入 \(x=1\) 得到 \(\frac{1}{3}\)

本题中,类似的,我们先将长度为 \(L\) 的线段视为长度 \(1\),那么答案乘以 \(L\) 即可。

\(f(x)\) 为点 \(x\) 被覆盖至少 \(K\) 次的概率,我们可以从一个简单的角度下手并考虑,设 \(g(x,k,p)\) 表示以点 \(x\) 为基准,当前其被被覆盖了 \(k\) 次,已经用了 \(p\) 条线段的概率,那么我们有:

\[g(x,k,p)=g(x,k-1,p-1)\times \dotsm+g(x,k,p-1)\times \dotsm \]

转移本质上是在做多项式运算,如果暴力转移,然后对点值进行操作并选择插值还原,就可以得到一个 \(\mathcal O(N^2K)\) 的做法了。

然而事实上这个多项式我们可以直接计算出来,不妨设 \(P(x)\) 表示对于一组线段,\(x\) 被覆盖的概率,那么我们有:

\[f(x)=\sum_{i=K}^{N} \binom{N}{i} P(x)^i(1-P(x))^{N-i} \]

由于 \(P(x)\) 为关于 \(x\) 的二次函数,所以 \(f(x)\) 为关于 \(x\)\(2N\) 次多项式。我们随便找 \(2N+1\) 个点值就可以解决本题了。

至此,通过拉格朗日插值与积分的结论,我们可以得到一个 \(\mathcal O(N^2)\) 的做法。

  • 如何优雅的暴力拉格朗日插值:

注意到:

\[F(x)=\sum_{i=1}^n y_i \prod_{i\ne j}\frac{(x-x_j)}{(x_i-x_j)} \]

计算分子的连乘,这里 \(\mathcal O(n^2)\),接下来我们暴力计算多项式除以短多项式,这里 \(\mathcal O(n)\),需要算 \(\mathcal O(n)\) 次,复杂度为 \(\mathcal O(n^2)\)

  • 更加简单的做法

注意到我们知道点值,那么我们是可以简单得到下降幂多项式的系数序列。

如果知道下降幂的系数序列,那么又可以优雅的暴力转普通幂多项式。

  • \(\mathcal O(n\log n)\) 的做法

展开是没有前途的,而且真的没有前途,所以我们大力积分:

先给一个结论:

\[B(x,y)=\int_0^1 t^x(1-t)^ydt=\frac{x!y!}{(x+y+1)!} \]

证明:

  • 分布积分法

考虑计算

\[\begin{aligned} &\int g'(x)f(x) \\&=g(x)f(x)-\int g(x)f'(x) \end{aligned}\]

证明:

注意到前者为:

\[\begin{aligned} &g(x)f(x)=\int (g'(x)f(x)+f'(x)g(x)) \\&=\int g'(x)f(x)+\int g(x)f'(x) \end{aligned}\]

于是得证。

接着注意到:

\[\begin{aligned} &B(a,b)=\int_0^1 x^a(1-x)^b dx \end{aligned}\]

我们构造 \(g(x)=\frac{x^{a+1}}{a+1}\),那么 \(x^a=g'(x)\),然后令 \(f(x)=(1-x)^b\)

于是有:

\[\begin{aligned} &B(a,b)=\int_0^1 g'(x)f(x) \\& B(a,b)=\Big(g(1)f(1)-g(0)f(0)\Big)-\int_0^1 g(x)f'(x) \\& B(a,b)=-\int_0^1 \frac{x^{a+1}}{a+1}f'(x) \\& B(a,b)=\int_0^1 \frac{x^{a+1}}{a+1} b(1-x)^{b-1} \\& B(a,b)=\frac{b}{a+1}\int_0^1 x^{a+1}(1-x)^{b-1} \end{aligned}\]

接下来我们设 \(n=a+b\),那么有:

\[B(k,n-k)=\frac{n-k}{k+1}\int_0^1 x^{k+1}(1-x)^{n-k-1} \]

注意到:

\[B(k,n-k)=\frac{n-k}{k+1}B(k+1,n-k-1) \]

注意到 \(B(n,0)=\int_0^1 x^n=\frac{1}{n+1}\)

于是可以得到 \(B(n-1,1)=\frac{1}{n(n+1)}\)

类似递推得到 \(B(k,n-k)=\frac{(n-k)!}{(n+1)^{\underline{n-k+1}}}=\frac{(n-k)!k!}{(n+1)!}\)

代入 \(B(a,b)\) 中得到 \(B(a,b)=\frac{a!b!}{(a+b+1)!}\)


事实上,注意到 \(P(x)=2x(1-x)\)

\[\begin{aligned} &\int_0^1 dx\cdot f(x)=\int dx\cdot \sum_{i=K}^{N} \binom{N}{i} P(x)^i(1-P(x))^{N-i} \\&=\int_0^1 dx\cdot \sum_{i=K}^{N} \binom{N}{i} (2x)^i(1-x)^i(1-(2x)(1-x))^{N-i} \\&=\sum_{i=K}^N \binom{N}{i} \int_0^1 dx \cdot (2x)^i(1-x)^i\sum_j^{N-i}\binom{N-i}{j}(-1)^j(2x)^j(1-x)^j \\&=\sum_{i=K}^N \binom{N}{i} \int_0^1 dx\sum_j^{N-i}\binom{N-i}{j}(-1)^{j}(2x)^{i+j}(1-x)^{i+j} \\&=\sum_{i=K}^N \binom{N}{i} \sum_j^{N-i} \binom{N-i}{j}(-1)^j2^{i+j} \int_0^1 dx\cdot x^{i+j}(1-x)^{i+j} \end{aligned}\]

等等,这个式子,是不是就是我们的前置知识?!

所以我们得到:

\[\begin{aligned} &=\sum_{i=K}^N \binom{N}{i} \sum_j^{N-i} \binom{N-i}{j}(-1)^j2^{i+j} \frac{((i+j)!)^2}{(2(i+j)+1)!} \\&=\sum_{k=K}^N \frac{(k!)^2\times 2^k}{(2k+1)!}\sum_{i=K}^N \sum_{j}^{N-i} [i+j=k] \binom{N}{i}\binom{N-i}{j}(-1)^j \\&=\sum_{k=K}^N \frac{(k!)^2\times 2^k}{(2k+1)!}\sum_{i=K}^N \sum_{j}^{N-i} [i+j=k] \binom{N}{i+j}\binom{i+j}{j}(-1)^j \\&=\sum_{k=K}^N \frac{(k!)^2\times 2^k\binom{N}{k}k!}{(2k+1)!}\sum_{i=K}^N \sum_{j}^{N-i} [i+j=k] \frac{1}{j!i!}(-1)^j \end{aligned}\]

分别卷积即可。

posted @ 2020-09-11 20:00  Soulist  阅读(164)  评论(0)    收藏  举报