题目大意

这里

题解

我们枚举最后剩下的球的种类,那么其他球可以看做没用了。
设选定的球有\(a_i\)个,球的总数为\(s=\sum_{i=1}^n a_i\)。
现在问题变为:在一个长度为\(s\)的数轴上,初始在\(a_i\),问在不到达\(0\)的前提下到达\(s\)的期望步数。
设\(p_i\)表示在\(i\)点,向前/后移动一步的概率,有:\(p_i = \frac{i(s-i)}{s(s-1)}\)。
可以列出一个比较显然的式子:
\[f_i = (1-2p_i) f_i + p_i f_{i-1} + p_i f_{i+1} + step_i\]
注意\(step_i = \frac{i}{s}\),为什么?
感性理解一下。
想象你有一张很大的图,有一些节点是终止节点。
现在你要从当前节点向某个后继节点走一步,要算到达任意一个终止节点的期望步数。
由于我们现在选定了一个终止节点。
那么假设走到了\(0\)号点,就相当于走到了去往另一个终止节点的路径。
不妨把这"1"步拆分成若干份,这若干份的和为\(1\),分开计算。
由于走到\(0\)就会走到另一条路径上去,所以每一份不妨设为不走到其它路径上的概率。
所以\(step_i\)为从\(i\)点出发,不走到\(0\)的条件下走到\(s\)的概率。
这是一个经典问题了,很容易得到\(step_i = \frac{i}{s}\)。
树上高消肯定是可以的,然而需要求逆复杂度为\(O((\sum a)logn)\)无法通过此题。
所以我们需要进一步深入。
带入\(step_i = \frac{i}{s}\),稍微变换后有:
\[f_i - f_{i+1} = (f_{i-1}-f_i) +\frac{s-1}{s-i}\]
所以可以得到:\(f_{i}-f_{i+1} = (f_1-f_2) + \sum_{j=2}^{i}\frac{s-1}{s-j}\)
那么有:
\[f_1 = \sum_{i=1}^{s-1} (f_i - f_{i+1}) = (s-1)(f_1-f_2)+\sum_{i=2}^{s-1}\sum_{j=2}^{i} \frac{s-1}{s-j}\]
而\(\sum_{i=2}^{s-1}\sum_{j=2}^{i} \frac{s-1}{s-j} = \sum_{i=2}^{s-1} (s-i) \frac{s-1}{s-i} =(s-2)(s-1)\)。
所以\(f_1 = (s-1)(f_1-f_2) + (s-2)(s-1)\)。
而由于\(f_0\)属于另一条路径,即不存在,故\(f_1 = (1-2p)f_1 +pf_2 + \frac{1}{s}\)。
化简有:\(2f_1 = f_2 + 1\),所以\(f_1 - f_2 = 1 - f_1\)。
所以有:
\[f_1 = (s-1)(1-f_1) +(s-2)(s-1)\]
解得\(f_1 = \frac{(s-1)^2}{s}\),即\(f_1-f_2 = 1-\frac{(s-1)^2}{s}\)
而我们知道\(f_{i}-f_{i+1}\)与\(f_{i-1}-f_i\)之间的关系,所顺次推出所有\(f_i\)即可。
答案\(ans = \sum_{i=1}^n f_{a_i}\),复杂度\(O(max(a)logn)\)。

[CF850F] Rainbow Balls的更多相关文章

  1. CF850F Rainbow Balls 题解

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

  2. Codeforces554 C Kyoya and Colored Balls

    C. Kyoya and Colored Balls Time Limit: 2000ms Memory Limit: 262144KB 64-bit integer IO format: %I64d ...

  3. 13 Balls Problem

    今天讨论的是称球问题. No.3 13 balls problem You are given 13 balls. The odd ball may be either heavier or ligh ...

  4. Dapper学习 - Dapper.Rainbow(三) - Read

    前面已经介绍了新增/修改/删除了, 接下来介绍一下Rainbow的Read方法. 一.Read -- Rainbow原生 1. 先看测试代码 var conStr = ConfigurationMan ...

  5. Dapper学习 - Dapper.Rainbow(二) - Update/Delete

    上一篇介绍了Rainbow的Create方法, 这里就来介绍一下Update方法吧, 毕竟新增和修改是双胞兄弟嘛. 一.Update 1. 测试代码: var conStr = Configurati ...

  6. Dapper学习 - Dapper.Rainbow(一) - Create

    Dapper这个ORM有许多扩展, 我自己用过两种, 也算是比较主流的两种, Rainbow和Extension, 这里就先介绍下Rainbow吧, 毕竟这个先用, 当然, 由于我使用的是mysql数 ...

  7. Angular中使用Rainbow

    在使用js类库和框架的时候,大家都习惯于编写自己的使用示例,如果能将示例中的html,js和css 进行展示, 并进行高亮显示,效果会很棒,例如在html高亮显示jquery代码 上面的示例是使用ra ...

  8. Open judge C16H:Magical Balls 快速幂+逆元

    C16H:Magical Balls 总时间限制:  1000ms 内存限制:  262144kB 描述 Wenwen has a magical ball. When put on an infin ...

  9. hduoj 4710 Balls Rearrangement 2013 ACM/ICPC Asia Regional Online —— Warmup

    http://acm.hdu.edu.cn/showproblem.php?pid=4710 Balls Rearrangement Time Limit: 6000/3000 MS (Java/Ot ...

随机推荐

  1. jmeter阶梯加压线程组

    添加阶梯加压线程组路径为鼠标捕获测试计划后,点击鼠标右键->添加->Threads(Users)->jp@gc – Stepping Thread Group(deprecated) ...

  2. 一个IT男的表白

    致BCD6 CEC0 C3F4 转一轮肩胛骨 倒一杯铁观音 白驹过隙,倏忽两秋 远方有希望和梦想 有火车.微信美颜视频聊天和碧根果 有你的支持 如果身旁没有你 生活无趣失去动力 就像python失去类 ...

  3. Java 集合基础知识 List/Set/Map

    一.List Set 区别 List 有序,可重复: Set 无序,不重复: 二.List Set 实现类间区别及原理 Arraylist 底层实现使用Object[],数组查询效率高 扩容机制    ...

  4. 《Redis设计与实现》阅读笔记(三)--链表

    链表 定义 链表分为两部分,链表节点和持有链表的list结构. 每个链表节点包含前置节点指针,后置节点指针,节点值void*用于保存各种不同类型的值 list结构包含表头节点指针,表尾节点指针,节点数 ...

  5. IP地址相关知识

    IP地址基本概念                                                                                            ...

  6. yocto-sumo源码解析(八): ProcessServer

    从前面章节的论述中,我们知道BitBakeServer实际上是一个ProcessServer,什么是ProcessServer不可不了解. 1. 类的声明: 首先这是一个python的多进程包里面的进 ...

  7. Mac 终端快捷键

    ctrl+A           跳转到行开头 ctrl+E           跳转到行结尾 ctrl+U           清空当前行 Command+K 清屏 Command+→多终端页面跳转 ...

  8. Python20-Day07

    面向对象之继承与派生 什么是继承? 继承是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又称为基类或者超类,新建的类称为派生类或者子类 子类会‘遗传’父类的特性,从而解决代码重用问题 py ...

  9. 随手记录-linux-Linux目录结构

    转:别人的 装完Linux,首先需要弄清Linux 标准目录结构 / root —?启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home —?存储普通用户的个人文件 ft ...

  10. Final发布用户使用报告 -- Thunder团队

    Thunder爱阅app Final发布用户使用报告 用户数量:14人 以下为用户评论:(注:为了保护用户的姓名权,以下用户名以昵称形式给出.) 序列 昵称 个人信息 获得软件途径 使用次数 用户评论 ...