UOJ449. 【集训队作业2018】喂鸽子 [概率期望,min-max容斥,生成函数]
思路
由于最近养成的不写代码的习惯(其实就是懒),以下式子不保证正确性。
上来我们先甩一个min-max容斥。由于每只鸽子是一样的,这只贡献了\(O(n)\)的复杂度。
现在的问题转化为对于\(n\)只鸽子里面的\(c\)只鸽子,求喂饱其中一只鸽子的期望时间。
我们对期望的式子差分一下,变成统计经过\(i\)秒之后\(c\)只鸽子仍然一只都没有被喂饱的概率。
枚举这\(i\)秒里面有\(s\)秒喂到了,设\(f_{c,s}\)表示给\(c\)只鸽子喂了\(s\)粒玉米,一只都没有饱的概率,我们得到
\[
ans_c=\sum_i \sum_{s=0}^i {i\choose s} (\frac {n-c} n)^{i-s}f_{c,s}
\]
(上式的\((\frac{c}{n})^s\)被塞进\(f_{c,s}\)里面了)
由于\(s> c(k-1)\)的时候\(f\)必然为0,所以可以得到
\[
ans_c=\sum_{s=0}^{c(k-1)} f_{c,s} \sum_i {i+s\choose s} (\frac{n-c}{n})^i
\]
后面那一项很像\(\frac 1 {(1-x)^{s+1}}\)的展开式,可以快速得到,所以问题就转化为求\(f_{c,s}\)。
我们有一个暴力DP的式子:
\[
f_{c,s}=\sum_{i<k} f_{c-1,s-i}{s\choose i} \frac 1 {n^i}
\]
显然可以转换成卷积的形式用NTT优化,最后总复杂度\(O(n^2k\log k)\)。
我们还有另一种做法。把概率变成方案数,我们设\(f_{c,s}\)表示给\(c\)只鸽子喂了\(s\)粒玉米,一只都没有饱的方案数。再设\(f_c(x)\)表示这个东西的指数生成函数。
容易发现,求\(f_c(x)\)其实就等价于求\((\sum_{i=0}^k \frac{x^i}{i!})^c\)。
然后是一个神奇操作:

(orz daklqw)
(daklqw说是从yhx-12243那里学的,所以两个都要orzorz)
于是就\(O(n^2k)\)做完了。
代码
咕咕咕
UOJ449. 【集训队作业2018】喂鸽子 [概率期望,min-max容斥,生成函数]的更多相关文章
- UOJ422. 【集训队作业2018】小Z的礼物 [min-max容斥,插头DP]
UOJ 思路 由于没有代码和AC记录的支撑,以下思路可能有错. 看到全部取完,大概可以想到min-max容斥. 由于期望的表达式里面合法方案的个数是在分母里面的,所以可以想到把它记录在状态里. 然而由 ...
- LOJ2542. 「PKUWC2018」随机游走【概率期望DP+Min-Max容斥(最值反演)】
题面 思路 我们可以把到每个点的期望步数算出来取max?但是直接算显然是不行的 那就可以用Min-Max来容斥一下 设\(g_{s}\)是从x到s中任意一个点的最小步数 设\(f_{s}\)是从x到s ...
- UOJ#422. 【集训队作业2018】小Z的礼物
#422. [集训队作业2018]小Z的礼物 min-max容斥 转化为每个集合最早被染色的期望时间 如果有x个选择可以染色,那么期望时间就是((n-1)*m+(m-1)*n))/x 但是x会变,中途 ...
- UOJ #449. 【集训队作业2018】喂鸽子
UOJ #449. [集训队作业2018]喂鸽子 小Z是养鸽子的人.一天,小Z给鸽子们喂玉米吃.一共有n只鸽子,小Z每秒会等概率选择一只鸽子并给他一粒玉米.一只鸽子饱了当且仅当它吃了的玉米粒数量\(≥ ...
- [UOJ422][集训队作业2018]小Z的礼物——轮廓线DP+min-max容斥
题目链接: [集训队作业2018]小Z的礼物 题目要求的就是最后一个喜欢的物品的期望得到时间. 根据$min-max$容斥可以知道$E(max(S))=\sum\limits_{T\subseteq ...
- 【UOJ#422】【集训队作业2018】小Z的礼物(min-max容斥,轮廓线dp)
[UOJ#422][集训队作业2018]小Z的礼物(min-max容斥,轮廓线dp) 题面 UOJ 题解 毒瘤xzy,怎么能搬这种题当做WC模拟题QwQ 一开始开错题了,根本就不会做. 后来发现是每次 ...
- 2019.2.25 模拟赛T1【集训队作业2018】小Z的礼物
T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) ...
- 【UOJ#450】【集训队作业2018】复读机(生成函数,单位根反演)
[UOJ#450][集训队作业2018]复读机(生成函数,单位根反演) 题面 UOJ 题解 似乎是\(\mbox{Anson}\)爷的题. \(d=1\)的时候,随便怎么都行,答案就是\(k^n\). ...
- UOJ#418. 【集训队作业2018】三角形
#418. [集训队作业2018]三角形 和三角形没有关系 只要知道儿子放置的顺序,就可以直接模拟了 记录历史最大值 用一个pair(a,b):之后加上a个,期间最大值为增加b个 合并? A1+A2= ...
随机推荐
- java ArithUtil 数据计算精度工具
ArithUtil: /** * 如果需要精确计算,非要用String来够造BigDecimal不可 */ package com.leaniot.securitymonitor.util; impo ...
- SpringICO和DI区别
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- Oracle数据库连接超时
关于Oracle数据库的连接失败问题,有N种情况都会导致,这次遇到的是一般开发或者运维人员难以发现的 场景: 有一台机A能够正常连接数据库并正常运行,机器B连接失败 32位WebService程序基于 ...
- 了解Django之前
什么是web应用? 通俗地讲,就是通过浏览器访问一个网址,该网站从后台调取数据,然后把相应的界面展示给用户这样的一个过程. 什么是HTTP协议? 即超文本传输协议:规定了客户端与服务端消息传输的格 ...
- 【转载】C#中List集合First和FirstOrDefault方法有何不同
在C#的List集合中查找一个符合条件的元素,一般我们会用First方法或者FirstOrDefault方法来返回第一个符合条件的对象,First方法和FirstOrDefault的调用都是使用Lam ...
- 关于ES6的对象扩展运算符
对象的扩展运算符(...),用于取出参数对象中的所有可遍历属性,然后拷贝到当前对象之中 对象扩展运算符: 1. 复制对象 let obj1 = { x: 1, y: 2, z: 3 } let obj ...
- HP-UX 解压缩tar.gz
对于tar.gz包分两步: gunzip *.tar.gz 解压为tar包 tar xf *.tar 解压完成
- linux学习记录--比较基本的文件档案知识
[档案类型权限,连接数,档案拥有者,档案所属群组,档案容量,修改日期,档名],对应了上面的每一列的参数属性. 档案类型权限那一部分总共有十个字母,第一个字母代表档案类型: 当为[ d ]则是目录,例如 ...
- abp学习(三)——文档翻译一
地址:https://aspnetboilerplate.com/Pages/Documents 什么是ASP.NET样板?ASP.NET Boilerplate(ABP)是一个开放源代码且文档齐全的 ...
- spark HMM
Scala实现的: https://github.com/skrusche63/spark-intent/tree/master/src/main/scala/de/kp/scala/hmm http ...