鞅与停时定理
好高妙!
大致思想是给每个局面构造一个势能函数 \(F(a_1, a_2, \ldots, a_n)\),使得 \(\sum E(F(a'_1, a'_2, \ldots, a'_n)) - E(F(a_1, a_2, \ldots, n)) = -1\),其中 \(a'\) 取遍 \(a\) 的后继状态。这样我们就能直接用终态的势能函数减去初始态的势能函数计算期望,即答案为 \(E(S) - E(T)\)。
可以考虑设 \(F(a_1, a_2, \ldots, a_n) = \sum\limits_{i = 1}^n f(a_i)\)。只要能构造出 \(f(x)\) 就能计算了。
1. 2024.2.26 模拟赛 T2 摸牌(cards)
设 \(g(x) = f(x) - f(x - 1)\)。推式子可以发现即要求:
令 \(g(0) = 0\),即可得到 \(g\) 的递推式,再做一遍前缀和即可得到 \(f(x)\)。
2. CF1025G Company Acquisitions
设 \(a_i\) 为 \(i\) 接着的点,设 \(F(a_1, a_2, \ldots, a_n) = \sum\limits_{i = 1}^n f(a_i)\)。即要求对于任意 \(x, y\),都有:
令 \(f(0) = 0\),有:
考虑 \(f\) 能满足这个条件的一个必要条件:
即 \(f(x + 1) = 2 f(x) - 1\)。递推计算即可。
3. CF1479E School Clubs
推式子过程略去。最后可以得到 \(f(x + 1) = \frac{(3n - 2x) f(x) - (2n - x) f(x - 1)}{n - x}\)。
但是没法线性预处理逆元,只能递推时维护分子和分母。设第 \(x\) 项的分子为 \(f(x)\),分母为 \(g(x)\)。有:
\(O(n)\) 计算即可通过。
4. CF1951G Clacking Balls
考虑用相邻两个球之间的距离来描述一个状态。
设距离序列为 \(a_1, a_2, \ldots, a_k\)(忽略 \(0\))。考虑鞅与停时定理,设一个状态的势能为 \(\sum\limits_{i = 1}^k f(a_i)\),一次操作能使得势能期望减少 \(1\)。那么:
设 \(g(x) = f(x + 1) - f(x)\),有:
考虑每个数的贡献,有:
不难发现令 \(g(x - 1) - g(x) = \frac{n}{m} x\) 满足要求,因为 \(\sum\limits_{i = 1}^k a_i\) 恒等于 \(m\)。
若令 \(g(0) = 0\),那么 \(g(x) = -\frac{n}{m} \binom{x + 1}{2}\),因为我们需要在操作后删除 \(a\) 中的 \(0\) 所以必须令 \(f(0) = 0\),那么有 \(f(x) = -\frac{n}{m} \binom{x + 1}{3}\)。
终止状态的势能为 \(f(m)\)。于是用初始状态势能减去终止状态势能就是答案。时间复杂度 \(O(n \log n)\)(瓶颈在对每个球的位置排序)。