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\) 的间距,后续这里有点没想明白,先放着吧。

提交记录 Submission #277027763 - Codeforces

posted @ 2024-08-12 12:49  fhq_treap  阅读(30)  评论(0)    收藏  举报