night

· · 题解

赛时花了 1h 左右想出了做法,然后因为时间不够了只写了判断是否有解,由于一个细节写错了挂成 22 分,遗憾呀。

下文很多东西正确性个人感觉比较显然,故没写证明。

可以发现对于 b 中的一个元素,它要么是从 a 中的一个区间元素 [l,r] 合并而成的,要么是 a 中的一个前缀和后缀合并而成的。

具体结构长这样:

这个实际上是对称的,就是要翻转再做一遍。

考虑枚举 X_{beg}X_{end} 的位置,还有它们合并之后在 b 中的位置 z,这个复杂度是 O(n^3) 的。

考虑其它位置怎么处理,对于 Y 可以每次贪心取最小的段,可以 O(n^3) 预处理。得到 Y 部分匹配到的位置 l,然后从 l 处理 U,V,W 部分。

fu_{i,j} 代表 U 部分从 i 端点开始匹配 b 中的 [1,j] 右端点最小的位置,但是 V 部分是一个一个匹配的,所以设 h_{i,j,k} 代表 U 还没使用 W 部分从 i 端点开始匹配 b 中的 [1,j] 右端点 k 是否可以为 j。此处 h 的转移如下:

总复杂度为 $O(n^3)$,可以通过。 [code](https://qoj.ac/submission/2162418)