CF850F 题解
题意
有一袋 \(n\) 个颜色球,第 \(i\) 个颜色的球有 \(a_i\) 个。
当袋子里至少有两个不同颜色的球时,执行以下步骤:
一个接一个的按照顺序随机取出两个的球,这些球的颜色可能是一样的。
把第二个球涂成第一个球的颜色,然后把两个球放回袋子里。
所有这些动作只需要一秒钟。
输出无法操作时候的期望时间,对 \(10^9+7\) 取模。
\(n\le 2500,1\le a_i \le 10^5\)
题解
分别考虑每种颜色。那么设 \(f_i\) 表示当前颜色的球有 \(i\) 个,到没有其他颜色的球时的期望秒数。
设 \(s=\sum\limits_{i=1}^n a_i\),则 \(f_0=+\infty\),\(f_s=0\),\(\forall i \in (0,s),f_i=(f_{i-1}+f_{i+1})p_i+f_i(1-2p_i)+1\)。其中 \(p_i\) 为 \(\frac{i(s-i)}{s(s-1)}\)。
但因为有无穷,这是无法求的。我们需要避开 \(0\)。因为一旦进入 \(0\) 就出不来,所以所有从 \(i\) 到 \(s\) 的合法路径都是不经过 \(0\) 的。那么我们设 \(g_i\) 表示从 \(i\) 到 \(s\) 不经过 \(0\) 的概率,易得为 \(\frac{i}{s}\)。结合其实际意义,我们可以修改上式:\(f_0=f_s=0\),\(\forall i\in(0,s),f_i=(f_{i-1}+f_{i+1})p_i+f_i(1-2p_i)+\frac{i}{s}\)。注意,此时 \(f_0\) 没有实际意义,赋 \(0\) 仅为了运算方便。
此时若用高斯消元,复杂度为 \(O(n^3V^3)\),无法接受。将其化为更简单的形式:\(f_{i+1}-f_i=f_i-f_{i-1}-\frac{s-1}{s-i}\)。因为 \(f_0=0\),我们只需求出 \(f_1\) 即可。再结合 \(f_s=0\),有 \(f_1+\sum\limits_{i=1}^{s-1}f_{i+1}-f_i=sf_1-\sum\limits_{i=1}^{s-1}\frac{s-1}{s-i}s-i=sf_1-(s-1)^2=0\)。则 \(f_1=\frac{(s-1)^2}{s}\)。递推即可。复杂度 \(O(V\log P)\),瓶颈在求逆元。
此题关键在由 \(g\) 得出 \(f\) 的方程。非常巧妙地结合其实际意义。
CF850F 题解的更多相关文章
- CF850F Rainbow Balls 题解
考虑最后变成哪一种颜色. 设 \(s = \sum\limits_{i=1}^n a_i\) 设现在有 \(k\) 种当前颜色, 需要全部变成该种颜色, 期望步数为 \(f_k\). 考虑状态转移.设 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- Software_programming_EnterpriseArch_ServiceWithSingleTonFactory
19:50:31 <UML 模式和应用> P322 系统需要支持多种第三方外部服务,例如费用计算,授权服务,库存系统,都具有不同的API, 而且还无法改变. 解决方案之一: 使用 单例模式 ...
- JS 替代eval方法
- PHP Array数组
PHP中的数组实际上是一个有序映射.映射是一种把values关联到keys的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列 ...
- 076_Master Detail 与Lookup
- JS form表单数据校验及失效情况下的解决方案
如下图,当执行提交操作之前,我们需要对序号,要求完成时间,责任人,措施内容四项进行非空,字符长度及输入内容的类型进行校验. 直接贴样式代码 <div class="wrapper an ...
- 微积分 I 笔记
1.1 集合 这一节复习了高中关于集合的基础知识 介绍了一些新的概念 笛卡尔积 (Cartesian Product) 集合 \(X\) 与 \(Y\) 的笛卡尔积 (直积) \(X \times Y ...
- C# 读取电脑CPU、主板、硬盘序列号等信息
ManagementObjectSearcher 解析不到头文件,需要手动 Add Referance 需要添加引用:System.Management,然后引入命名空间:using System.M ...
- Windows 批量测试 ip:port 是否通畅
使用 telnet + cmd 脚本处理: @echo off start cmd /k "telnet 10.2.3.29 3000" start cmd /k "te ...
- 4-20mA换算为实际值公式
Ov = [(Osh - Osl) * (Iv - Isl) / (Ish - Isl)] + Osl 实际工程量 = [((实际工程量)的高限 - (实际工程量)的低限)*(lv - 4) / (2 ...
- 记录一次在deepin安装node版本管理工具nvm的过程
安装nvm sudo apt-get install git -y # 安装git cd /home # 随便找个目录放代码 git clone https://github.com/nvm-sh/n ...