• Loj 2834 「JOISC 2018 Day 2」修行 题解


    纯属搬运工

    新年的军队大概是严格强于此题的,于是我们用新年的军队做法艹!

    可以注意到就是求 $n$ 阶排列有 $m=k-1$ 个 $p_i<p_{i+1}$ 的排列数

    注意到排列可以映射到 $[0,1]$ 上的 $n$ 个随机变量,故设 $f(x,y,t)$ 表示最后一个取 $t$ 的概率密度函数。用 $x$ 记录相邻个数,若是 $n$ 阶排列那么次数就是 $n-1$ ,同时若新加入的数小于最后加入的数就乘上个 $y$ (其实这里大于小于没关系,是对称的)

    $$f(t)=x(\int_{0}^{t} f(\tau)\mathrm{d}\tau+y\int_{t}^{1} f(\tau)\mathrm{d}\tau)+1$$

    注意最后 $+1$ 就是 $n=1$ 的情况

    简写一下 $f(u,v,t)$

    $$f(t)=x(\int_{0}^{t} f(\tau)\mathrm{d}\tau+y\int_{t}^{1} f(\tau)\mathrm{d}\tau)+1$$

    注意到答案就是 $n![x^{n-1}y^{m}]\int_{0}^{1}f(t)\mathrm{d}t$ ,所以我们如果能求出 $f$ ,就有推式子的空间了,接下来我们考虑解出 $f$ ,两边求导,有

    $$f'=x(1-y)f$$

    显然有一个解为 $f(t)=Ce^{x(1-y)t}$ , $C$ 为一个常数

    将式子带到 $t=0$ 与 $t=1$ 时的原式中,设 $I=\int_0^1f(t) \mathrm{d}t$ ,所以有

    $$1+xyI=C,1+xI=Ce^{x(1-y)}$$

    就有 $C=\frac{1-y}{1-ye^{x(1-y)}}$ ,故

    $$ans=n![x^{n-1}y^m]f(t)\mathrm{d}t$$

    $$=n![x^{n-1}y^m]\int_{0}^{1}\frac{(1-y)e^{x(1-y)}}{1-ye^{x(1-y)}}$$

    $$=n![x^{n-1}y^m]\frac{1}{1-ye^{x(1-y)}}\int_{0}^{1}(1-y)e^{x(1-y)}$$

    $$=n![x^{n-1}y^m]\frac{1}{1-ye^{x(1-y)}}\frac{e^{x(1-y)}-1}{x}$$

    $$=n![x^ny^m]\frac{e^{x(1-y)}-1}{1-ye^{x(1-y)}}$$

    我们把 $e^{x(1-y)}$ 先看作一个常量,有

    $$\frac{1}{1-ye^{x(1-y)}}=\sum_{i \ge 0}y^ie^{x(1-y)i}$$

    $$ans=n![x^ny^m]\sum_{i \ge 0}y^i [e^{x(1-y)(i+1)}-y^i e^{x(1-y)i}]$$

    由于 $x$ 只在 $e$ 指数上,所以可以写作

    $$ans=n![y^m]\sum_{i \ge 0}y^i \frac{(1-y)^n(i+1)^n-(1-y)^ni^n}{n!}$$

    $$=\sum_{i \ge 0}[y^{m-i}](1-y)^n[(i+1)^n-i^n]$$

    $$=\sum_{i=0}^{m}(-1)^{m-i}\tbinom{n}{m-i}[(i+1)^n-i^n]$$

    就可以 $O(n)$ 做了

    评测链接

  • 相关阅读:
    二十三、java连接oracle数据库操作:jdbc
    四、正则表达式使用
    Linux常用命令大全
    消息队列的常见问题
    JVM:带你查看常见的问题,以及分析处方法
    JVM监控与调优
    缓存总结2
    缓存总结1
    消息队列mq总结
    Java集合Map基本方法
  • 原文地址:https://www.cnblogs.com/wyzwyz/p/15891482.html
Copyright © 2020-2023  润新知