Cry_For_theMoon  

浅浅记录一下鞅和停时

其实现在我还没有搞懂它的严谨定义是什么,本来也不太想学这个的。但是后来还是模拟赛遇到了就学习一下吧。

如果有一个期望题目,我们想求 \(S\rightarrow T\) 的局面的期望,并且 \(T\) 是比较特殊的状态(而且一般这个状态都只有一个)。我们现在来对每个局面设一个势能函数 \(f(S)\),期望让答案就是 \(f(S)-f(T)\)。那么我们需要设计一个怎么样的 \(f\)

局面之间存在转移:\(S\rightarrow X_1,X_2,...,X_m\)。如果能让 \(f(S)\)\(E(f(X))\) 的差是 \(1\),就满足 \(ans=f(S)-f(T)\)

根据这个条件我们其实就可以列出等式,构造 \(f\)。但是需要举一点具体的例子来说明这里面的技巧性。


T1 CF1349D Slime and Biscuits

这个题我们把局面定义为饼干数序列 \(a_1,a_2,...,a_n\)。令 \(m=\sum a_i\)。则问题变成了:有 \(\frac{a_i}{m}\) 的概率选中 \(i\),将 \(a_i\) 减一,接着等概率 \(\frac{1}{n-1}\) 地选择一个 \(j\neq i\)\(a_j\) 加一。终止条件是存在 \(a=m\)

构造 \(f\) 使得 \(F(a_1,a_2,...,a_n)=\sum_{i=1}^{n}f(a_i)\),这是重要的。可以列出式子:

\[\sum_{i=1}^{n}f(a_i) = 1 + \sum_{i=1}^{n}\frac{a_i}{m}(f(a_i-1)+\sum_{j\neq i}\frac{1}{n-1}f(a_j+1)+\frac{n-2}{n-1}f(a_j)) \]

\(1\) 拆成 \(\sum_{i=1}^{n}\frac{a_i}{m}\) 扔进括号里去,这是套路的一步。\(\sum_{j\neq i}X(j)\) 可以看成是 \(\sum_{j}X(j)-X(i)\),于是这个等式左右两侧可以被对称地拆成 \(n\) 个只关于 \(a_i\) 的形式。都形如:

\[f(x) = A_xf(x-1) + B_xf(x)+ C_xf(x+1) + D_x \]

并且不难发现 \(A_0=C_{m+1}=0\)。这给了我们很好的性质:直接消元或者瞎设一个 \(f(0)=x\) 就能做了。而因为是势能所以还有个解释就是 \(f(0)\) 随便设也无所谓。但我目前还不是很信服这个说法,我认为还是能直接消元解释的就消元来的严谨(因为后面的题目里就会有 \(A_0\neq 0\) 的情况)。

Q:终止状态不应该有 \(n\) 个吗?(所有 \(a_i=m\)) 的情况,为什么我们认为只有一个。

A:我的理解是让终止态唯一才能做,而 \(n\) 个终止态本质形态都是相同的,或者说可以把状态看作多重集而非数列,否则的话就算是初始状态我们任意交换数组元素,难道还能得到不同的初始状态吗?


T2 CF1025G Company Acquisitions

这个题的推导难度也不大,但是特点在于它的序列长度是不定的。

这给我们带来一个问题:我们按照上面的分析法,那这个式子势必要带上序列长度 \(m\),但是这个 \(m\) 又是在变化的??

其实如果直觉好一点的话,直接硬算可以发现 \(m\) 会被消掉。但是这个例子已经告诉我们上面的分析方法太笨重了。

实际上:我们直接提取出一个元素来看,将转移按照对这个元素的影响来讨论即可。例如,我们设 \(a_i\) 是点 \(i\) 下面挂着的虚点个数。则等式左边就是 \(f(a_i)\),右边有常数 \(\frac{1}{m}\) 是显然的,接着分类讨论:

  • 转移没有影响到 \(a_i\),那么有 \(\frac{m-1}{m}\times \frac{m-2}{m-1}=\frac{m-2}{m}\) 的概率。转移到 \(f(a_i)\)

  • 我们把 \(a_i\) 给了出去,概率是 \(\frac{1}{m}\)(这里就不需要考虑给了谁了)转移到 \(a_if(0)\)

  • 别人给了 \(a_i\),概率是 \(\frac{m-1}{m}\times \frac{1}{m-1}=\frac{1}{m}\)。转移到 \(f(a_i+1)\)

因此有递推式:

\[f(x)=\frac{1}{m}+\frac{m-2}{m}f(x)+\frac{1}{m}xf(0)+\frac{1}{m}f(x+1) \]

这个式子稍微化一下就会发现 \(m\) 的存在确实是逗逗你的呀。注意到它有个特点是带 \(f(0)\)

这里还是可以写成 \(f(x)=A_xf(x)+B_xf(x+1)+C_x\) 的形式。但你发现有个问题是 \(B_n\) 可不是 \(0\),所以 \(f\) 不是定义在 \([0,n]\) 上而是 \([0,\infty)\) 上的,这有点难办,不好消。

然后 T1 的解释就来了:我们可以直接规定 \(f(0)=0\),既消去了 \(xf(0)\) 又使得我们可以直接递推。其实我现在还是感觉这个地方有点神秘的。


T3 CF1479E School Clubs

如果不用 T2 的手法直接套 T1 做你就会发现这个题巨大恐怖。

现在我们就有自信了:除去常数以外无非就是几种情况:

  1. 和这个俱乐部完全无关。转移到 \(f(x)\)

  2. 这个俱乐部出去的人,而且选择了自立门户。转移到 \(f(x-1)+f(1)\)

  3. 这个俱乐部出去的人,而且选择了回来。转移到 \(f(x)\)

  4. 这个俱乐部出去的人,而且没回来。转移到 \(f(x-1)\)

  5. 别的俱乐部跑过来的人。转移到 \(f(x+1)\)

于是就是 \(f(x)\)\(f(x-1)/f(x+1)/f(1)\) 有关。

而且这个题就比较特殊,\(f(0)\) 必须为 \(0\),因为你注意到 \(S\)\(S+\{0\}\) 是本质相同的状态。同理还是让 \(f(1)=-2\) 来刚好和常数抵消然后就和上面一样递推就完了。


T4 Yukicoder 1794 Not a star yet

\(l_i=1\):容易想到我们尝试维护度数序列。然后你发现按照上面的方法研究,只要知道 \(d\) 那么几种情况的概率都是好算的。但是有一个有趣的事实:就是我们是无法用 \(d\) 序列来刻画删边加边的(因为仅凭 \(d\) 序列你无法判断 \((u,v)\) 这条边是否存在。所以这个题只能从局部而非整体考虑。和上面三个题有本质区别,但并不难。

\(l_i\le 2\):也容易想到维护两种权值构成的图的度数序列,然后就是个二维问题了,并没有本质上的区别。


T5 CF1951G Clacking Balls

是我目前觉得最神秘的一个题。

就是我不知道为什么按照上面的方法刻画我们能容许 \(a_i=0\) 的存在,同时还默认他们可以转移到 \(f(-1)\),但总之按照上面的方法(分离每个 \(a_i\) 研究)并默认序列长度不变就很容易推导出递推式。

posted on 2025-06-08 17:45  Cry_For_theMoon  阅读(99)  评论(0)    收藏  举报