CF1854C

发布时间 2023-10-30 16:52:12作者: zzafanti

传送门

description

给定正整数 \(n,m\) 和集合 \(S\),满足 \(S\) 中元素互不相同且都是小于等于 \(m\) 的正整数。每次进行如下操作

  1. 从集合 \(S\) 中随机选取一个数记作 \(x\)

  2. \(S\) 中删去 \(x\)

  3. 如果 \(x+1\leq m\)\(x+1\) 不在 \(S\) 中,把 \(x+1\) 放入 \(S\)

求把集合清空的期望次数。

  • \(n,m,|S|\leq 500\)

solution

数据范围诈骗。

可以发现,一个数对答案的贡献不受比它小的数的影响,只需要考虑每个数合并到第一个比它大的数的期望步数(或者最后一个数合并到 \(m+1\)),依据期望的线性性把每个数的期望步数加起来即为答案。

于是问题转化成这样独立的模型:

已知两数分别为 \(x,y(x\leq y)\)

  • \(y\neq m+1\),随机把 \(x\)\(y\) 加 1。

  • \(y=m+1\),把 \(x\) 加 1。

\(f_{x,y}\) 表示使得初始的 \(x,y\) 相等 x 的期望增加步数。

显然有转移:

  • \(f_{i,i}=0\)

  • \(f_{i,j}=\dfrac{(f_{i+1,j}+1)+f_{i,j+1}}{2}\)

  • \(f_{i,m+1}=f_{i+1,m+1}+1\)

时间复杂度 \(O(m^2)\)

code

代码里的状态 \(x,y\) 分别表示第一个数和第二个数到 \(m+1\) 的距离。

Submission #230364270 - Codeforces

P.S.

CF1540B 一个类似的方法算期望的题