首页 > 其他分享 >CF850F 题解

CF850F 题解

时间:2023-01-25 22:33:15浏览次数:58  
标签:le 颜色 limits 题解 CF850F frac sum

题意

传送门

有一袋 \(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\) 的方程。非常巧妙地结合其实际意义。

标签:le,颜色,limits,题解,CF850F,frac,sum
From: https://www.cnblogs.com/FishJokes/p/17067386.html

相关文章

  • 安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案
    安装OpenCV时,会遇到下面的错误/home/zhang/slam/opencv-3.4.5/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:653:20:fatalerror:boostdesc_bgm.i:没有那个文......
  • LeetCode-343. 整数拆分 - 题解分析
    题目来源343.整数拆分题目详情给定一个正整数 n ,将其拆分为k个正整数的和( k>=2 ),并使这些整数的乘积最大化。返回你可以获得的最大乘积 。示例1:输入:......
  • 题解 CF1773H【Hot and Cold】
    赛时跟队友一起摆烂了,于是没做出来,回来补题。如果询问到了答案,可以直接判断并退出,因此下文的询问过程并没有考虑这一点。显然“\((1,1)\)比\((0,0)\)离所求位置更近”......
  • 关于gnome-control-center的问题解决
    突然发现电脑桌面的设置无法打开,点击后一直转圈。在网上研究了一圈,发现可能是gnome出了问题,输入指令gnome-control-center,结果报了如下错误:gnome-control-center:......
  • 洛谷 P1478 陶陶摘苹果(升级版) 题解
    这道题只要会自定义cmp恰当地进行排序,其他部分没有什么大问题。上代码:1#include<bits/stdc++.h>2usingnamespacestd;3intn,s,h1,h2,cnt;4structapple{......
  • CF Educational Round 142 (Rated for div2) 题解
    A注意到除了血量为\(1\)的怪物,其余的怪物直接斩杀是更合理的。所以只要统计血量为\(1\)的怪物的个数即可。#include<cstdio>voidsolve(){ intn;scanf("%d",......
  • 洛谷 P1094纪念品分组 题解
    一道典型的贪心算法题。题目内容不多说了,大致说一下代码的思路:给定的所有纪念品中可以先用sort排一下顺序,然后从价格最高和最低的开始向中间靠拢(可以看做是指针),这样保证......
  • 洛谷 P2440木材加工 题解
    这是一道二分答案算法题,洛谷标签中的贪心等完全用不到。这道题的数据范围较大,所以保险起见,整型的数据我们都开成longlong题意很好理解,这里就不做过多的分析了,直接看代码......
  • 洛谷P1259 黑白棋子的移动 题解
    本蒟蒻这题用的打表做法,其实也可以理解为是一种递推。先来观察一下样例:当n为7时,输出共有14行,易得输出行数为2n。ooooooo*******--oooooo--******o*oooooo******--o......
  • LeetCode-670. 最大交换-题解分析
    题目来源670.最大交换题目详情给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例1:输入:2736输出:7236解释:交换数字2和数字......