6.21 CW 模拟赛 T4. 上课
思路
考虑 \(G = 1\)
因为进入顺序是不确定的, 怎么计算期望呢?
首先先列出期望相关的柿子
这里用了个性质, 在 \(n!\) 个排列中 \(a\) 在 \(b\) 之前和 \(a\) 在 \(b\) 之后的概率都为 \(1/2\)
考虑对这个东西找 \(\min\)
不难发现当 \(\leftarrow, \rightarrow\) 数量确定为 \(x, y\) 时, \(1/2\) 的数量是确定的, 而剩下的显然尽量让 \(\rightarrow\) 在前, \(\leftarrow\) 在后, 这样只会产生 \(\overrightarrow{i} \land \overleftarrow{j}\), 不会产生 \(\overleftarrow{i} \land \overrightarrow{j}\) 一定最优
剩下的就是显然的了, 关键在于观察出 \(\rightarrow\) 在前, \(\leftarrow\) 在后
考虑正解
很显然是要计算 \(c(\mathbb{S}, i)\) 表示 \(\mathbb{S}\) 中的组已经就坐, 现在要把第 \(i\) 组塞进去的最小花费
这咋做呢, 发现我们的期望变得更加复杂了
不妨转化为状态 \(s_i\), \(\leftarrow\) 为 \(1\), \(\rightarrow\) 为 \(0\), 已经被占据的为 \(2\), 没有被占据且当前坐不到的不产生贡献, 那么我们的期望就变成了
怎么办呢?
我们拆分成两个部分
一个是 \(0, 1\) 之间的贡献, 显然和上面的过程是一样的
另一个是 \(0, 2\) 和 \(1, 2\) 之间的贡献, 因为我们拆完贡献之后还是没啥关系, 所以不能用上面的方法
但是我们可以使用调整法, 如果状态不是 \(0000\cdots 0011 \cdots 1111\) 这样的, 我们一定可以调整成这样显然不劣
所以最终的解的形式是确定的, 一定是位置靠前的一部分人向右走, 靠后一部分人向左走
破防专用分界线
考虑这个神人结论的思维链
首先明确期望概念中的「概率」在这里只和进入的 \(n!\) 个顺序有关, 我们要安排的是一个具体的每人从左边或是右边进入
首先考虑 \(G = 1\), 也就是最初板凳上是没有人的, 且一个组坐完所有板凳
这种情况下 \(i, j\) 产生尴尬值的情形只有如下几种, 不妨钦定 \(i < j\)
- \(i\) 比 \(j\) 先落座, \(j\) 向右走
- \(j\) 比 \(i\) 先落座, \(i\) 向左走
不难发现在一共 \(n!\) 种情况中, \(i\) 比 \(j\) 先落座和 \(j\) 比 \(i\) 先落座的次数是相当的
所以任何两个位置 \(i, j\), 只要 \(j\) 向右走就会产生 \(1/2\) 的模糊尴尬值, 只要 \(i\) 向左走就会产生 \(1/2\) 的模糊尴尬值
所以最终的模糊尴尬值为
两个部分分别是作为 \(i, j\) 的贡献
这 \(\rm{tm}\) 还能不会就不是人类了, 我想不用多说了
考虑 \(G \neq 1\), 现在我们要引入组的顺序, 显然等价于计算 \(c(\mathbb{S}, o)\) 表示组 \(\mathbb{S}\) 已经坐好, 现在要把第 \(o\) 组坐进去的最小花费
这种情况下 \(i, j\) 产生尴尬值的情形会稍有变化
- \(i\) 比 \(j\) 先落座/\(i \in \mathbb{S}\), \(j\) 向右走
- \(j\) 比 \(i\) 先落座/\(j \in \mathbb{S}\), \(i\) 向左走
记 \(\textrm{pre}_i\) 表示 \(i\) 之前有多少位置在 \(\mathbb{S}\) 中, \(\textrm{suf}_i\) 表示 \(i\) 之后有多少位置在 \(\mathbb{S}\) 中
现在的模糊尴尬值为\((\)\(|i|\) 表示 \(i\) 是组中的第几个元素, \(|o|\) 表示组的大小\()\)
考虑我们计算 \(c(\mathbb{S}, o)\) 的时间
因为转移 \(\mathcal{O} (G2^G)\), 复杂度要在 \(\mathcal{O} (G\log n)\) 左右, 总复杂度才能在 \(\mathcal{O} (G^22^G\log n)\), 扎不多德勒
而这个柿子显然可以找到一个合适的分界线, 也就是当 \(\textrm{pre}_i + \frac{|i| - 1}{2} \leq \textrm{suf}_i + \frac{|o| - |i|}{2}\) 时, 我们会选择 \(i\) 向右走, 否则选择 \(i\) 向左走
找到分解线之后, 剩下的可以快速计算, 就不赘述了
总结
拆贡献技巧: 总的贡献往往可以拆成每个对的贡献之和
拆贡献技巧: 对的贡献往往可以拆成每个点在关于它的所有对的贡献之和
当整体的贡献难以取 \(\min\) 时, 往往可以让每个个体取到 \(\min\), 其一定对应全体的 \(\min\)