QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: nullptr_qwq

Posted at:

Last updated:

Back to Problem

O(nk^7) 可以过

注意到 X,Y 并非等价,考虑计算 X 获胜的概率以及平局的概率,由此容易算出 Y 获胜概率。

$k=0$:考虑 X,Y 手中所有牌的最大值为 $mx$,若 X,Y 的 $mx$ 数量不相等,则多的一方必然获胜。否则相等时所有 $mx$ 必然配对消除,递归到最后一个后缀中,剩下的牌可以任意决策是否被 $mx$ 消除。从大到小处理所有值,只考虑 $\ge v$ 所有值的相对顺序并进行平局局面的 dp,枚举 X,Y 在最后一个后缀中都留下 $k$ 个,前面做任意归并(保证最后一个不为 $v$),可以 $O(n)$ 计算。

考虑存在 $\times$ 的过程,那么 $\times$ 对于 X 一定是用来消除 Y 的 $mx$ 才是有用的。由于限定 X 不败,所以 Y 的所有 $mx$ 必须要被消除干净。从左到右确定每个 Y 的 $mx$ 是否被 $\times$ 消除,如果在最后一个 Y 的 $mx$ 之后还有没被消除的 X 的 $mx$ 则直接 X 获胜,否则递归到后缀的子问题。

对于中间这些段的子问题,如果是 X 的 $mx$ 与 Y 的 $mx$ 消除,则要求中间这个段的 $\times$ 不能把 Y 的 $mx$ 爆了,否则如果是 $\times$ 和 Y 的 $mx$ 消除,前面必须是,不用 X 的 $mx$,两边恰好只留下 Y 的 $mx$。考虑在填更小的值时候带上这些子问题处理。

  • 子问题 $\alpha$:Y 最后有绝对的最大值,要求必须消成 Y 仅有 $mx$ 和 X 消空。

  • 子问题 $\beta$:Y 最后有绝对的最大值,必须消空 X,但是 Y 可以留下 $\ge 1$ 个点。

往下递归时记录 $\alpha$ 和 $\beta$ 子问题的数量,以及剩余未被分配的 $\times$ 的数量,还有 $>v$ 是否确定已经 X 获胜,如果确定获胜那么最后一段就是任意填的,下面填的时候只需要满足 $\alpha,\beta$ 子问题的限制。对于一个 $\times$,尝试在加入时直接确认和它配对的 Y 的牌。考虑加入若干最小值 $v$,对子问题 $\alpha$ 和 $\beta$ 的分裂(形成更小的子问题)。然后还有一些未被限制的段,可以任意填/归并。

这里还有一些自由段状物,表示不是 $\times$ 就随便填,这里大概是可以用 $\alpha,\beta$ 的段数来表示的。直接记录 $\beta$ 的数量会是 $O(n)$ 的,考虑钦定一些 $\beta$ 必须是有 $\times$ 参与的,剩下的 $\beta$ 直接合法,从而让 $\beta$ 数量是 $O(k)$ 的。如果一个子问题 $\beta$ 没有 $\times$ 的参与,那么直接就合法,算成自由放置的段。

通过分步转移之类的优化可以做到 $O(nk^4)$ 的复杂度,但是 $O(nk^7)$ 可以过。

Comments

avatar
Qingyu
无敌了