题意

传送门

有一袋 \(n\) 个颜色球,第 \(i\) 个颜色的球有 \(a_i\) 个。

当袋子里至少有两个不同颜色的球时,执行以下步骤:

  1. 一个接一个的按照顺序随机取出两个的球,这些球的颜色可能是一样的。

  2. 把第二个球涂成第一个球的颜色,然后把两个球放回袋子里。

所有这些动作只需要一秒钟。

输出无法操作时候的期望时间,对 \(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 题解的更多相关文章

  1. CF850F Rainbow Balls 题解

    考虑最后变成哪一种颜色. 设 \(s = \sum\limits_{i=1}^n a_i\) 设现在有 \(k\) 种当前颜色, 需要全部变成该种颜色, 期望步数为 \(f_k\). 考虑状态转移.设 ...

  2. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  3. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  4. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  5. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  6. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  7. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  8. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  9. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  10. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Software_programming_EnterpriseArch_ServiceWithSingleTonFactory

    19:50:31 <UML 模式和应用> P322 系统需要支持多种第三方外部服务,例如费用计算,授权服务,库存系统,都具有不同的API, 而且还无法改变. 解决方案之一: 使用 单例模式 ...

  2. JS 替代eval方法

  3. PHP Array数组

    PHP中的数组实际上是一个有序映射.映射是一种把values关联到keys的类型.此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列 ...

  4. 076_Master Detail 与Lookup

  5. JS form表单数据校验及失效情况下的解决方案

    如下图,当执行提交操作之前,我们需要对序号,要求完成时间,责任人,措施内容四项进行非空,字符长度及输入内容的类型进行校验. 直接贴样式代码 <div class="wrapper an ...

  6. 微积分 I 笔记

    1.1 集合 这一节复习了高中关于集合的基础知识 介绍了一些新的概念 笛卡尔积 (Cartesian Product) 集合 \(X\) 与 \(Y\) 的笛卡尔积 (直积) \(X \times Y ...

  7. C# 读取电脑CPU、主板、硬盘序列号等信息

    ManagementObjectSearcher 解析不到头文件,需要手动 Add Referance 需要添加引用:System.Management,然后引入命名空间:using System.M ...

  8. Windows 批量测试 ip:port 是否通畅

    使用 telnet + cmd 脚本处理: @echo off start cmd /k "telnet 10.2.3.29 3000" start cmd /k "te ...

  9. 4-20mA换算为实际值公式

    Ov = [(Osh - Osl) * (Iv - Isl) / (Ish - Isl)] + Osl 实际工程量 = [((实际工程量)的高限 - (实际工程量)的低限)*(lv - 4) / (2 ...

  10. 记录一次在deepin安装node版本管理工具nvm的过程

    安装nvm sudo apt-get install git -y # 安装git cd /home # 随便找个目录放代码 git clone https://github.com/nvm-sh/n ...