Irwin-Hall 分布

对于 \(n\) 个均匀分布于 \([0,1]\) 的连续随机变量 \(X_1,X_2,\dots,X_n\),其和的随机变量 \(X\) 满足:

\[P(X\le x)=\sum _{k=0}^{\lfloor x\rfloor}(-1)^k\binom nk\frac{(x-k)^n}{n!}
\]

证明:

设 \(f(x)\) 为 \(X_i\) 的概率密度函数。显然:

\[f(x)=\left\{\begin{matrix}
1 & (x\in [0,1])\\
0 & \text{otherwise}
\end{matrix}\right.
\]

那么

\[P(X\le x)=\int _{x_i\in [0,1],\sum x_i\le x}\prod f(x_i)\prod dx_i\\
=\int _{x_i\in [0,1],\sum x_i\le x}\prod dx_i\\
\]

采用归纳法证明。

\[\int _{x_i\in [0,1],\sum x_i\le x}\prod_{i=1}^{n+1} dx_i=\int_0^1\int _{x_i\in [0,1],\sum_{i=1}^n x_i\le x-x_{n+1}}\left(\prod_{i=1}^n dx_i\right) d{x_{n+1}}\\
=\int_0^1\sum_{k=0}^{\lfloor x-x_{n+1}\rfloor}(-1)^k\binom nk \frac{(x-k-x_{n+1})^n}{n!}dx_{n+1}\\
\]

记 \([x]=x-\lfloor x\rfloor\),

\[\int_0^1\sum_{k=0}^{\lfloor x-x_{n+1}\rfloor}(-1)^k\binom nk \frac{(x-k-x_{n+1})^n}{n!}dx_{n+1}\\
=\int_0^{[x]}\sum_{k=0}^{\lfloor x\rfloor}(-1)^k\binom nk \frac{(x-k-x_{n+1})^n}{n!}dx_{n+1}+\int_{[x]}^1\sum_{k=0}^{\lfloor x\rfloor-1}(-1)^k\binom nk \frac{(x-k-x_{n+1})^n}{n!}dx_{n+1}\\
=\sum_{k=0}^{\lfloor x\rfloor}(-1)^k\binom nk\frac{(x-k)^{n+1}-(x-k-[x])^{n+1}}{(n+1)!}+\sum_{k=0}^{\lfloor x\rfloor-1}(-1)^k\binom nk\frac{(x-k-[x])^{n+1}-(x-k-1)^{n+1}}{(n+1)!}\\
=\sum_{k=0}^{\lfloor x\rfloor-1}(-1)^k\binom nk\frac{(x-k)^{n+1}-(x-k-1)^{n+1}}{(n+1)!}+(-1)^{\lfloor x\rfloor}\binom n{\lfloor x\rfloor}\frac{[x]^{n+1}}{(n+1)!}\\
=\sum_{k=0}^{\lfloor x\rfloor-1}(-1)^k\binom nk\frac{(x-k)^{n+1}}{(n+1)!}+\sum_{k=1}^{\lfloor x\rfloor}(-1)^k\binom n{k-1}\frac{(x-k)^{n+1}}{(n+1)!}+(-1)^{\lfloor x\rfloor}\binom n{\lfloor x\rfloor}\frac{[x]^{n+1}}{(n+1)!}\\
=\sum_{k=0}^{\lfloor x\rfloor-1}(-1)^k\binom {n+1}k\frac{(x-k)^{n+1}}{(n+1)!}+(-1)^{\lfloor x\rfloor}\binom n{\lfloor x\rfloor-1}\frac{[x]^{n+1}}{(n+1)!}+(-1)^{\lfloor x\rfloor}\binom n{\lfloor x\rfloor}\frac{[x]^{n+1}}{(n+1)!}\\
=\sum_{k=0}^{\lfloor x\rfloor}(-1)^k\binom {n+1}k\frac{(x-k)^{n+1}}{(n+1)!}
\]

不难发现 \(n=1\) 时命题成立,证毕。

应用

CF1477F

令 \(m=\) 题目所述 \(k\)。

首先注意到这个正比例实际上就是随便切一刀。

观察到一个分别被切多少刀后合法的序列 \(\{b_i\}\) 的贡献是:

\[\binom{\sum b_i}{b_1,b_2,\dots,b_n}\prod\left(\frac{a_i}{s}\right)^{b_i}
\]

据此设计每一个巧克力的生成函数:

\[F_i(z)=\sum_{j\ge 0} \frac{f(a_i,j)}{j!}\times \left(\frac{a_i}s\right)^jz^j\\
F(z)=\prod F_i(z)
\]

答案即为

\[\sum_{i\ge 0}(1-[\frac{z^i}{i!}]F(z))
\]

因为 \([\dfrac{z^i}{i!}]F(z)\) 就是切 \(i\) 次成功的概率,而贡献已经在生成函数那里统计了。

那么考虑求出 \(f(a,b)\) 再谈生成函数。

设切的位置为 \(X_1,X_2,\dots,X_b\),设 \(z_i=X_i-X_{i-1}\)。

令 \(w=\dfrac{m}{a}\),那么所求概率即为

\[n!\int _{0<z_i<w,1-w<\sum z_i<1}\prod dz_i\\
=n!w^n\int _{0<z_i<1,\frac 1w-1<\sum z_i<\frac 1w}\prod dz_i
\]

根据 Irwin-Hall 分布,设

\[G(x)=\sum_{k=0}^{\lfloor x\rfloor}(-1)^k\binom nk\frac {(x-k)^n}{n!}
\]
\[n!w^n\int _{0<z_i<1,\frac 1w-1<\sum z_i<\frac 1w}\prod dz_i\\
=n!(G(\frac 1w)-G(\frac 1w-1))
\]

将其展开得到

\[=\sum _{k=1}^{\lfloor\frac am\rfloor}(-1)^{k-1}\binom{b+1}k\left(1-\frac{km}a\right)
\]

代入原式,

\[\sum_{j\ge 0} \frac{1}{j!}\times \left(\frac{a_i}s\right)^jz^j\sum _{k=1}^{\lfloor\frac {a_i}m\rfloor}(-1)^{k-1}\binom{j+1}k\left(1-\frac{km}{a_i}\right)\\
\]

交换求和次序,不难发现此式(这里把 \(a_i\) 写作 \(a\))

\[=\sum_{i=0}^{\lfloor \frac {a}k\rfloor}\frac{(-1)^i}{i!}\left(\left(\frac{(a-mi)z}{s}\right)^i+i\left(\frac{(a-mi)z}{s}\right)^{i-1}\right)\exp(\frac{(a-mi)z}{s})
\]

考虑最后得到的式子里面 \([z^ie^{jz}]\) 对答案的贡献,就是

\[\sum_{k\ge 0} \frac{j^k}{k!}(i+k)!\\
=\frac{1}{i!}\sum_{k\ge 0}\binom{i+k}{k}j^{k}\\
=\frac{(1+j)^{-i-1}}{i!}
\]

不妨把后面的 \(\exp(\dfrac{pz}{s})\) 视为另一个变量,\(p\) 为系数,可以二维 NTT 解决,但是事实上没有人这么做,由于时间宽泛,可以用更简单的暴力 \(O(\dfrac{n^2L}{m^2})\),这里 \(L=\sum a_i\)。

Irwin-Hall 分布/CF1477F 题解的更多相关文章

  1. D3、EChart、HighChart绘图demol

    1.echarts:   <!DOCTYPE html>   <html>   <head>   <meta charset="utf-8" ...

  2. 软件项目技术点(1)——d3.interpolateZoom-在两个点之间平滑地缩放平移

    AxeSlide软件项目梳理   canvas绘图系列知识点整理 软件参考d3的知识点 我们在软件中主要用到d3.js的核心函数d3.interpolateZoom - 在两个点之间平滑地缩放平移.请 ...

  3. D3js-API介绍【中】

    JavaScript可视化图表库D3.js API中文參考,d3.jsapi D3 库所提供的全部 API 都在 d3 命名空间下.d3 库使用语义版本号命名法(semantic versioning ...

  4. 【D3 API 中文手冊】

    [D3 API 中文手冊] 声明:本文仅供学习所用,未经作者同意严禁转载和演绎 <D3 API 中文手冊>是D3官方API文档的中文翻译. 始于2014-3-23日,基于VisualCre ...

  5. d3 数学方法(伪随机数生成器 )

    一.正态(高斯)分布(normal (Gaussian) distribution)的随机数 /* var nomarlRandmo = d3.random.normal(); console.log ...

  6. Generalized normal distribution and Skew normal distribution

    Density Function The Generalized Gaussian density has the following form: where  (rho) is the " ...

  7. POJ 2318 TOYS(点与直线的关系 叉积&&二分)

    题目链接 题意: 给定一个矩形,n个线段将矩形分成n+1个区间,m个点,问这些点的分布. 题解: 思路就是叉积加二分,利用叉积判断点与直线的距离,二分搜索区间. 代码: 最近整理了STL的一些模板,发 ...

  8. 【BZOJ2626】JZPFAR kd-tree+堆

    [BZOJ2626]JZPFAR Description 平面上有n个点.现在有m次询问,每次给定一个点(px, py)和一个整数k,输出n个点中离(px, py)的距离第k大的点的标号.如果有两个( ...

  9. D3js-API介绍【英】

    Everything in D3 is scoped under the d3 namespace. D3 uses semantic versioning. You can find the cur ...

  10. 【题解】AHOI2009同类分布

    好开心呀~果然只有不看题解做出来的题目才会真正的有一种骄傲与满足吧ヾ(๑╹◡╹)ノ" 实际上这题只要顺藤摸瓜就可以了.首先按照数位dp的套路,有两维想必是省不掉:1.当前dp到到的位数:2. ...

随机推荐

  1. 我是如何从0开始,在23天里完成一款Android游戏开发的 – Part 1 – 开篇与前2天

    本文由 ImportNew - ImportNew读者 翻译自 bigosaur.如需转载本文,请先参见文章末尾处的转载要求. 本文是这个系列的第一篇文章,记录作者的开篇和前2天的情况.文章由 朱新亮 ...

  2. TreeMap源码分析——深入分析(基于JDK1.6)

    TreeMap有Values.EntrySet.KeySet.PrivateEntryIterator.EntryIterator.ValueIterator.KeyIterator.Descendi ...

  3. 终端工具之Tabby

    我工作中用的最多的工具之一就是「终端连接工具」了,因为经常和 Linux 服务器打交道,经常在上面跑代码.排查系统问题等等. Windows 系统最常用的就是 Xshell 这款终端工具了,但是它只能 ...

  4. Blazor 组件库 BootstrapBlazor 中Card组件介绍

    一个较为完整的Card样子 Card组件介绍 Card组件分为三部分,CardHeader.CardBody.CardFooter. 代码格式如下: <Card> <CardHead ...

  5. 第四届河南省 CCPC 大学生程序设计竞赛

    F-集合之和 规定集合A和集合B的加法运算:\(A+B={x+y|x∈A,y∈B}\),设有限数集A中的元素个数为|A|,现给定n,请你构造集合A使得\(|A+A|=n\),如果A不存在,输出-1 题 ...

  6. 一个关于CountDownLatch的并发需求

    需求 A,B,C可并发运行,全部成功才算成功,一个失败全员回滚. 思考 使用CountDownLatch,可以保证三个线程结束后,才进行提交成功状态.但是怎么才能判断某个任务失败了呢? 捕获子线程异常 ...

  7. 使用CANAL同步数据

    1.概要 canal 是阿里发布的一个mysql 同步工具,它是模拟 mysql slave 的方式读取binlog,并可以将数据写入到队列中. 如下图:是官方提供的架构图. 2.下载CANAL 下载 ...

  8. Python3 print不输出回车符

    Python3 print的函数原型: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) objects ---- 输出 ...

  9. 【kernel】从 /proc/sys/net/ipv4/ip_forward 参数看如何玩转 procfs 内核参数

    本文的开篇,我们先从 sysctl 这个命令开始. sysctl 使用 sysctl 是一个 Linux 系统工具,后台实际上是 syscall,它允许用户查看和动态修改内核参数. # 查看当前设置的 ...

  10. Kettle用查出来的数据自动创建表

    ​Kettle在表输入的时候,写好很复杂的SQL,有种场景,就是想把这个很复杂的查出来的数据,自动创建一个表. 其实,操作步骤不复杂. 跟着我来做就是了. 1,新建表输出,Shift按住,从表输入拖动 ...