闲话 23.2.11
闲话
huge:不要觉得自己 nb 就瞎写啥无关奥赛的玩意
我背后一凉 说实在的
但是今天的闲话不能少(
今天在拜读这篇题解时发现一只 miku
挺好看的就保存下来了
miku!
今日推歌:Rabbit - john feat. 初音ミク
miku 的声音比较的小 但算是 john 的特色了吧
听说机房的音响会把人声再压一层
我比较好奇放出来是什么效果(
昨天 T3
emm....
有一张有 \(n\) 个位置的长椅,初始为空。有 \(n\) 个人依次落座,每个人会等概率随机选择一个满足“自己与相邻共三个位置均未被落座”的位置落座。若不存在满足条件的位置则这个人离开。
这张长椅连续 \(m\) 个位置的落座情况可以从左到右地用一个只含
X
和-
的字符串表示,其中X
表示这个位置有人坐,-
表示无人。例如,X-X--
表示一段连续 \(5\) 个位置中从左到右第一、三两个位置有人落座。对一个 \(n\),给定 \(m\) 和一个字符串 s,我们设 \(f(n)\) 为当长椅长度为 \(n\) 时,等概率随机选择一段长为 \(m\) 的位置时,所选位置的落座情况为 s 的概率。你需要求的就是
\[\lim_{n\to \infty}f(n) \]可以证明,答案可以表示成 \(p+\dfrac{q}{e}+\dfrac{r}{e^2}\) 的形式,其中 \(p,q,r\) 均为有理数。你需要输出的是 \(p, q, r\) 对 \(10^9+7\) 取模后的值。
\(1 \leq m = |s| \leq 1000\)。
有人说这道题是 AtCoder 上最难的题。但是不知道为啥省选模拟赛考到了,可能是某集训队组题人觉得很简单?
从样例 1 中我们能知道 X
出现的概率(即落座比例)是 \(\dfrac{1}{2} - \dfrac{1}{2e^2}\)。我们首先需要得出这个结果,过程中用到的方法可以推广到任意字符串。
每个人都选择座位这样的随机过程不好刻画。我们不妨让每个人只对应一个位置,这样最后落座与否只和一个顺序有关。容易发现顺序取遍可能的集合时,这样刻画和原方式是等价的。
然而注意到 \(n\to \infty\) 时不好维护一个 \(1\sim n\) 的排列作为顺序,因此考虑概率密度扩充状态(咋用啊?)。我们给第 \(i\) 个位置赋一个 \(X_i\in [0, 1]\) 的随机变量,让每个人按 \(X_i\) 从小到大的顺序落座,和上面的方式同样等价。
然后观察一个位置是否会被落座。我们假设这个位置是 \(k\),其向左、右的极长连续下降子段长度分别为 \(l, r\)。具体的,有
也就是观察一段极大的峰和峰两侧两个元素。容易发现由于 \(X_{k - l - 1} > X_{k - l} < X_{k - l + 1}\) 和 \(X_{k + r - 1} > X_{k + r} < X_{k + r + 1}\),\(k - l\) 和 \(k + r\) 两个位置肯定是最先被落座的。同样可以向 \(k\) 方向推导,得到 \(k - l + 2\),\(k + r - 2\) 也必定被落座。
因此可以知道的是,\(k\) 位置能被落座当且仅当其左右两侧极长下降子段的长度都是 \(2\) 的倍数。
我们可以只看峰的一侧,另一侧的概率相同。设 \(\Pr(2 \mid l), \Pr(2 \mid r)\) 为左/右侧极长下降子段长度是 \(2\) 的倍数的概率,并记随机变量 \(X_i\) 为 \(x\)。由对称性和容斥,我们能得到
因此可以写出 \(X_i\) 处被落座的概率密度函数 \(\Pr(2 \mid l) \times \Pr(2 \mid r) = e^{-2x}\)。落座比例即为对应概率密度函数在可取区间上的积分,即
然后考虑原问题,我们采用 dp 求解。
假设选出来的位置就是前 \(m\) 个位置,我们可以从左向右填 \(X_i\) 可能的取值,过程中维护先前状态的概率密度函数对一部分可能的取值区间的积分。
这过程有一个好处就是我们能时刻知道 \(l\) 的奇偶性。但我们无法知道 \(r\) 的奇偶性,因此考虑分别维护 \(r\) 为奇/偶是否合法。
我们设 \(f(i, 0/1, 0/1, 0/1)\) 表示当前填到第 \(i\) 个位置、\(l\) 的奇偶性(\(0\) 为偶)、\(r\) 为偶是否合法、\(r\) 为奇是否合法。初始状态为 \(f(0, 0, 1, 1) = e^{-x}, f(0, 1, 1, 1) = 1 - e^{-x}\)。
然后我们可以分别讨论 \(X_{i -1} < X_i\) 和 \(X_{i - 1} > X_i\) 的情况。
由于我们的转移需要得到 \([0, X)\) 或 \((X, 1]\) 内的概率(也就是在这个区间内作积分),这里的 dp 不能只保存值,而应当是一个概率密度函数的形式。
-
\(X_{i - 1} < X_i\):\(l\) 的奇偶性一定翻转,\(f(i - 1)\) 中有 \(r = 0\) 为偶定合法,因此第三维 \(r\) 定为 \(1\)。
如果这一位是
-
:
\(f(i - 1, 1, 1, 0/1) \to f(i, 0, 0, 1)\):在确定了 \(l\) 为偶的情况下该位置仍然无法落座,因此 \(r\) 必然为奇。
\(f(i - 1, 0, 1, 0/1) \to f(i, 1, 1, 1)\):该位置无法落座,但 \(l\) 为奇,无法确定 \(r\) 的奇偶性。
如果这一位是X
:
\(f(i - 1, 1, 1, 0/1) \to f(i, 0, 1, 0)\):\(l, r\) 都需要为奇,自然得到状态。这里的 \(f(i - 1)\to f(i)\) 的转移形如 \(f(i)\) 加上 \(\int_0^x f(i - 1) \text dy\),其中 \(f(i)\) 的自变量为 \(x\),\(f(i - 1)\) 的自变量为 \(y\)。
-
\(X_{i - 1} > X_i\):\(i\) 位置有 \(l = 0\),\(i - 1\) 位置 \(l\) 的奇偶性随意。
如果这一位是
-
:
\(f(i - 1, 0/1, 1, 0/1) \to f(i, 0, 0, 1)\):在确定了 \(l\) 为偶的情况下该位置仍然无法落座,因此 \(r\) 必然为奇。
如果这一位是X
:
\(f(i - 1, 0/1, 0/1, 1) \to f(i, 0, 1, 0)\):\(l, r\) 都需要为奇,自然得到状态。这里的 \(f(i - 1)\to f(i)\) 的转移形如 \(f(i)\) 加上 \(\int_x^1 f(i - 1) \text dy\),其中 \(f(i)\) 的自变量为 \(x\),\(f(i - 1)\) 的自变量为 \(y\)。
假设这个概率密度函数的自变量为 \(x\)。可以注意到我们需要求得一个概率密度函数的原函数在 \(x\) 处和 \(1\) 处的值,并 \(c\times \int e^{-x} \text dx = -c e^{-x} + C\);以及一个初始状态是 \(1 - e^{-x}\),存在常数,对它积分能得到 \(x^1\) 项。
因此任意时刻的 dp 值一定形如 \(P(x) + Q(x)e^{-1} + Ce^{-x}\),这里 \(P(x), Q(x)\) 为两个以 \(x\) 为自变量的多项式,\(C\) 为一个常数。\(e^{-1}\) 为代入 \(x = 1\) 时得到的值。
最终的答案即为
在计算答案时,我们需要求 \(\int_{0}^1 x^k e^{-x}\),这可以通过观察 \(f_k(x) = x^k e^{-x}\) 的原函数 \(F_k(x)\) 的形式实现。求原函数可以用分部积分法得到:
因此有
我们需要的就是
因此可以做到 \(O(n^2)\) 求解。
以下是博客签名,与正文无关。
请按如下方式引用此页:
本文作者 joke3579,原文链接:https://www.cnblogs.com/joke3579/p/chitchat230211.html。
遵循 CC BY-NC-SA 4.0 协议。
请读者尽量不要在评论区发布与博客内文完全无关的评论,视情况可能删除。