at_agc055_c Weird LIS 题解

_⁢ 

2023-02-17 10:04:23

题解

\{p_i\} 的 LIS 长度为 K

容易发现,a_i\in\{K-1,K\}

下文默认固定 K,将 a_i 都减去 K

划分

将排列中每个数划分为四种类型:

如:

{\color{red}3},\,{\color{black}2},\,{\color{blue}1},\,{\color{green}4},\,{\color{red}6},\,{\color{black}5}

如果一个红色点有多个可以用于替代的黑色点,只需保留最靠前的即可,其他视为蓝色点。

同理,可以证明,对于每个红黑点对,选择位置靠前的作为红点,替换黑点时一定不会发生需要替换其他点的情况。

一种错误的染色方法:

{\color{black}3},\,{\color{red}1},\,{\color{red}4},\,{\color{black}2}

需要用 \color{black}3 替换 \color{red}1 时,必须用 \color{red}4 替换 \color{black}2

观察

考虑两个答案不同,当且仅当 K 不同或每个位置 0-1 的取值不同。

以下是四种点对应的情况:

可以发现,黑色点和蓝色点对答案的影响完全一致

之所以黑色点会存在,是因为红色点需要一个「匹配」。

换言之,黑色点只会紧贴着红色点出现。

计数

对于确定的 K 以及满足题意的序列 \{a_i\},考虑将其对应到唯一一种染色方案上。

建出自动机:

$1$:最后放了一个红,下一个必须放黑。 $2$:最后放了一个蓝,下一个只能放绿或蓝,如果再放一个蓝的就不能放红黑对了。 $3$:红黑对放完了,下一个只能放绿或蓝。 考虑转移: $$ \begin{aligned} f'_{0,K+1} &\gets f_{0,K} & {\color{green}\text{绿}} \\ f'_{1,K+1} &\gets f_{0,K} & {\color{red}\text{红}} \\ f'_{2,K} &\gets f_{0,K} & {\color{blue}\text{蓝}} \\ f'_{0,K} &\gets f_{1,K} & {\color{black}\text{黑}} \\ f'_{0,K+1} &\gets f_{2,K} & {\color{green}\text{绿}} \\ f'_{3,K} &\gets f_{2,K} & {\color{blue}\text{蓝}} \\ f'_{3,K+1} &\gets f_{3,K} & {\color{green}\text{绿}} \\ f'_{3,K} &\gets f_{3,K} & {\color{blue}\text{蓝}} \end{aligned} $$ 时间复杂度 $\mathcal{O}(nm)$。 [提交记录](https://atcoder.jp/contests/agc055/submissions/38935975)。