1 条题解

  • 0
    @ 2025-8-24 22:17:43

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 鏡音リン
    希望大家都能成为自己想要的样子呐

    搬运于2025-08-24 22:17:43,当前版本为作者最后更新于2020-02-25 09:54:02,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    2021/06/29 更新:添加了详细的推式子过程,以及修改了排版。

    如果有人问我推过最恶心的式子是哪个,我会说是这题。

    我就不打表找规律,推式子警告

    我们设 f(n,k,x)f(n,k,x) 表示有 nn 个人的情况下,第 kk 小的红包钱数大于 xx 的概率。这也等价于至少 nk+1n-k+1 个红包的钱数大于 xx 的概率。这里推荐使用第二种定义,方便理解后面的递推边界。

    那么,容易看出我们要求的答案 ans(n,k)=01f(n,k,x)dxans(n,k)=\int_0^1f(n,k,x)dx

    考虑 ff 的递推式,nn 个人时生成了 n1n-1 个随机数,设这些随机数里最小的那个是 vv。此时一定有一个金额为 vv 的红包,讨论 vvxx 的大小关系:

    如果 v<xv<x,那么剩下 n1n-1 个红包里就需要 nk+1n-k+1 个红包大于 xx

    如果 v>xv>x,那么剩下 n1n-1 个红包里就需要 nkn-k 个红包大于 xx

    再想想,“1v1-v 块钱分成 n1n-1 个红包有 nk+1n-k+1 个红包大于 xx”和“11 块钱分成 n1n-1 个红包有 nk+1n-k+1 个红包大于 x1v\frac{x}{1-v}”是一样的,可以理解为通货膨胀了(?)

    还有一个问题,虽然随机数是均匀分布的,但 n1n-1 个随机数中的最小值 vv 可不是均匀分布的。我们要求出这个最小值小于 vv 的概率是 1(1v)n11-(1-v)^{n-1},然后对它求导得到 (n1)(1v)n2(n-1)(1-v)^{n-2},这个可以认为是最小值为 vv 的相对概率

    综合上述讨论,可以得到 ff 的递推式

    $$\begin{aligned} &f(n,k,x)\\ =&(n-1)\int_0^x(1-v)^{n-2}f(n-1,k-1,\frac{x}{1-v})dv\\ +&(n-1)\int_x^1(1-v)^{n-2}f(n-1,k,\frac{x}{1-v})dv \end{aligned} $$

    开始积分

    $$\begin{aligned} &\int_0^1f(n,k,x)dx\\ =&(n-1)\int_0^1\int_0^x(1-v)^{n-2}f(n-1,k-1,\frac{x}{1-v})dvdx\\ +&(n-1)\int_0^1\int_x^1(1-v)^{n-2}f(n-1,k,\frac{x}{1-v})dvdx \end{aligned} $$

    t=x1vt=\frac{x}{1-v} 然后化简一波,此处省略去了漫长的计算过程

    $$\begin{aligned} &\int_0^1f(n,k,x)dx\\ =&\frac{n-1}{n}\int_0^{+\infty} (1-\frac{1}{(t+1)^n})f(n-1,k-1,t)dt\\ +&\frac{n-1}{n}\int_0^{+\infty} \frac{1}{(t+1)^n}f(n-1,k-1,t)dt \end{aligned} $$

    注意这里积分上界变成了 +{+\infty},不是 11,因为 tt 的范围可以到正无穷大,而且当 k=n+1,x>1k=n+1,x>1f(n,k,x)f(n,k,x) 仍然有意义且值为 11,所以一定要积到正无穷大!下面推边界的时候也有这方面的说明

    貌似得到了更复杂的式子,出现了 1(t+1)n\frac{1}{(t+1)^n} 这个因子,我们用同样的方法继续积分看看

    $$\begin{aligned} &\int_0^{+\infty} \frac{1}{(x+1)^{(n+1)}}f(n,k,x)dx\\ =&\frac{n-1}{n}\int_0^{+\infty} (\frac{1}{(t+1)^n}-\frac{1}{(2t+1)^n})f(n-1,k-1,t)dt\\ +&\frac{n-1}{n}\int_0^{+\infty} \frac{1}{(2t+1)^n}f(n-1,k-1,t)dt \end{aligned} $$

    事情逐渐清晰起来,可以猜想并证明:

    $$\begin{aligned} &\int_0^{+\infty} \frac{1}{(lx+1)^{(n+1)}}f(n,k,x)dx\\ =&\frac{n-1}{n}\int_0^{+\infty} (\frac{1}{(lt+1)^n}-\frac{1}{((l+1)t+1)^n})f(n-1,k-1,t)dt\\ +&\frac{n-1}{n}\int_0^{+\infty} \frac{1}{((l+1)t+1)^n}f(n-1,k-1,t)dt \end{aligned} $$

    这回可以递推了。设

    $$P(n,k,l)=\int_0^{+\infty} \frac{1}{(lx+1)^{(n+1)}}f(n,k,x)dx $$

    则有

    $$P(n,k,l)=\frac{n-1}{n}(P(n-1,k-1,l)-P(n-1,k-1,l+1)+P(n-1,k,l+1)) $$

    递推边界通过 PPff 的定义可以计算:

    $$P(n,k,l) = \begin{cases} 0, & k=0; \\ \int_0^{+\infty} (lx+1)^{-n-1}dx=\frac{1}{ln}, & k=n+1;\\ \int_0^1 (lx+1)^{-2}dx=\frac{1}{l+1}, & n=1;\\ \end{cases} $$

    这里为什么 n=1n=1 时积到 11k=n+1k=n+1 时要积到 +{+\infty} 呢,因为 x>1x>1f(1,1,x)=0f(1,1,x)=0,但是 k=n+1k=n+1f(n,k,x)f(n,k,x) 表示的是至少 00 个红包大于 xx 的概率,那么无论 xx 为何值 f(n,k,x)f(n,k,x) 的值都为 11

    最终答案就是 P(n,k,0)P(n,k,0)

    那么这玩意怎么化简呢

    首先我们看着 n1n\frac{n-1}{n} 这个因子很难受,不妨修改一下 PP 的定义,用 P(n,k,l)P(n,k,l) 表示之前 nP(n,k,l)nP(n,k,l) 表示的意思,那么递推式和边界都要修改,顺便还能把递推式改为等价的更简洁的形式

    $$P(n,k,l) = \begin{cases} 0, & n=0,k\le0; \\ \frac{1}{l}, & n=0,k>0;\\ P(n-1,k-1,l)-P(n-1,k-1,l+1)+P(n-1,k,l+1), & n>0 \end{cases} $$

    此时 ans(n,k)=1nP(n,k,0)ans(n,k)=\frac{1}{n}P(n,k,0)

    假设从 P(n,k,0)P(n,k,0) 递归到 n=0n=0 共调用了 aaP(n1,k1,l)P(n-1,k-1,l) 分支,bbP(n1,k1,l+1)P(n-1,k-1,l+1) 分支,ccP(n1,k,l+1)P(n-1,k,l+1) 分支。需要满足 a+b+c=na+b+c=na+b<ka+b<k。那么这部分的贡献就是 n!(1)ba!b!c!(b+c)\frac{n!(-1)^b}{a!b!c!(b+c)},总和为

    $$P(n,k,0)=\sum_{a+b+c=n,a+b<k} \frac{n!(-1)^b}{a!b!c!(b+c)} $$

    继续化简

    $$\begin{aligned} P(n,k,0)=&\sum_{a+b+c=n,a+b<k} \frac{n!(-1)^b}{a!b!c!(b+c)}\\ =&\sum_{a=0}^{k-1} \frac{n!}{a!(n-a)}\sum_{b=0}^{k-a-1} (-1)^b\frac{1}{b!(n-a-b)!}\\ =&\sum_{a=0}^{k-1} \frac{n!}{a!(n-a)!(n-a)}(-1)^{k-a-1}C(n-a-1,k-a-1)\\ =&\frac{n!}{(n-k)!}\sum_{a=0}^{k-1} \frac{(-1)^{k-a-1}}{(n-a)^2a!(k-a-1)!}\\ =&\frac{n!}{(n-k)!}\frac{1}{(k-1)!}\sum_{a=0}^{k-1} (-1)^{k-a-1}C(k-1,a)(a-n)^{-2}\\ =&\frac{n!}{(n-k)!}\frac{1}{(k-1)!}\sum_{a=0}^{k-1} (-1)^{k-a-1}C(k-1,a)\sum_{j=0}^{\infty}C(-2,j)a^j(-n)^{-2-j}\\ =&\frac{n!}{(n-k)!}\sum_{j=0}^{\infty}C(-2,j)(-n)^{-2-j}\frac{1}{(k-1)!}\sum_{a=0}^{k-1} (-1)^{k-a-1}C(k-1,a)a^j\\ =&\frac{n!}{(n-k)!}\sum_{j=0}^{\infty}(j+1)n^{-2-j}S_2(j,k-1) \end{aligned} $$

    Gm(x)G_m(x) 是第二类斯特林数第 mm 列的普通生成函数,Gm(x)G_m'(x) 为其导数。我们有:

    $$G_m(x)=\sum_{i=0}^\infty S_2(i,m)x^i=\prod_{j=1}^m\frac{x}{1-jx} $$Gm(x)=j=1m1x(1jx)Gm(x)G_m'(x)=\sum_{j=1}^m\frac{1}{x(1-jx)}G_m(x)

    原式可以写成生成函数的形式:

    $$\begin{aligned} P(n,k,0)=&\frac{n!}{(n-k)!}\sum_{j=0}^{\infty}(j+1)n^{-2-j}S_2(j,k-1)\\ =&\frac{n!}{(n-k)!} (n^{-3}G_{k-1}'(\frac{1}{n})+n^{-2}G_{k-1}(\frac{1}{n}))\\ =&\frac{n!}{(n-k)!} n^{-2} (1+\sum_{j=1}^{k-1}\frac{n}{n-j})G_{k-1}(\frac{1}{n})\\ =&\frac{n!}{(n-k)!} n^{-1} (\sum_{l=n-k+1}^{n}\frac{1}{l})\prod_{j=1}^{k-1}\frac{1}{n-j}\\ =&\sum_{l=n-k+1}^{n}\frac{1}{l} \end{aligned} $$

    这回可以快速计算多组询问了。别忘了除以 nn!!

    ans(n,k)=1nl=nk+1n1lans(n,k)=\frac1n\sum_{l=n-k+1}^n\frac1l

    提醒:比赛时遇到这种题果断打表找规律。

    • 1

    信息

    ID
    5076
    时间
    2000ms
    内存
    250MiB
    难度
    6
    标签
    递交数
    0
    已通过
    0
    上传者