CF Math Train Collection
发现我们队好像在一些观察和数学相关的方面稍差,然后我们队看起来数据结构以及一些比较典的题目都不太需要我,所以题目一旦不和胃口,就会瞬间爆爆。
所以决定,加训加训加训加训加训加训!
板刷加训一下CF带 math/binom/probabilities 的标签,顺便自己也挺喜欢数学的,当作课后放松之类,锻炼脑子也很不错,尝试写一写思考过程,加训!
[√]446C
tag: 2400 / math / number theory / data structures
给定初始区间,区间加斐波那契数列,区间求和,取模 1e9 + 9,\(n,m \leq 300000\)
考虑直接矩阵快速幂,然后搬到线段树上即可
原本使用了分块,但很遗憾通过不了
分块提交 Submission #273301584 - Codeforces
线段树 \(2\log\) Submission #273484076 - Codeforces
[x] CF1951G
tag: 3100 / combinatorics / math / probabilities
给定一个长为 \(m\) 的环,环上有若干球,球位置互不相同,每次 \(\frac{1}{n}\) 的概率选中一个位置,将其上面的球顺时针向下一一位,若下一个位置有球,则两个位置的球合并,求 \(n\) 个球合并在一个位置的期望次数
考虑设计势能函数。
容易想到该问题等价于有 \(a_1,a_2,...,a_k\) 序列,每次有 \(\frac{1}{n}\) 的概率将 \(a_i\) 减一,\(a_{i+1}\) 加一并将等于 0 的元素删除。
考虑设计 \(\phi(a_1,...,a_k) = \sum_{1}^{k}f(a_i)\)
则 \(\phi_{t} - \phi_{t + 1} = \frac{1}{n}\sum_{1}^k f(a_i) - f(a_i - 1) + f(a_{i + 1}) - f(a_{i + 1} + 1) = 1\),这里我们强制令 \(f(0) = 0\),保证重叠元素不贡献。
看起来是差分的形式,我们考虑把差分写完,令 \(d_x = f(x + 1) - f(x)\)
\(\phi_t - \phi_{t + 1} = \frac{1}{n} \sum d(a_i) - d(a_{i + 1} + 1) = 1 \to \sum d(a_i) - \sum d(a_i + 1) = n\)
此时这个地方,看起来只能构造一个 \(d(x)\) 满足这个要求,知道 \(\sum a_i = m\)
我们容易构造一个 \(d(x - 1) - d(x) = -\frac{n}{m}x\) 来满足条件,即 \(d(x) = -\frac{n}{2m}(x^2 + x)\)
故由于 \(f(0) = 0\),我们对 \(d(x)\) 逐级求和,\(f(x) = -\frac{n}{m}\binom{x + 1}{3}\)
故 \(\text{E}(T) = \phi(a_1,.....a_n) - \phi(a_1 = m)\)
以上是从停时问题的角度思考的。
接下来我们重新审视这个问题,我们思考正常的合并应该是 \(i - 1 \to i\) 的,如果出现了一个 \(i \to i - 1\) 证明已经完成了 。
那么我们思考其实中间怎么移看起来没多大所谓,那么我们只需要考虑相邻的两个点就好了。
那么如果我们最后一步是 \(x \to x - 1\) ,期望步数为 \(E_x\),其概率为 \(P_x\)
所以总期望应该为 \(\sum P_i E_i\)
接着我们考虑如何计算这个 \(P_i\) 和 \(E_i\)
我们考虑长度为 \(d\) 的间距,后续这里有点没想明白,先放着吧。

浙公网安备 33010602011771号