题解:P9001 [CEOI2022] Parking

· · 题解

分析

<1> 首先不管空位数量的限制,先考虑如何让操作次数最少:

对每种颜色记录 二元组 (x_i,y_i)\in\{(0,0),(0,1),(1,1)\} 表示颜色为 i 的两辆车分别是/否位于靠近入口的一端,以及 (u_i,v_i) 表示它们初始停放的车位编号。那么对 (u_i,v_i) 连边建成图 G(形成若干个环与链),分讨可以得到操作次数的理论下界:

再尝试构造方案:

<2> 考虑在以上过程中,如何使得同一时刻占用车位数最少:

同样先分析下界,按照图 G 各连通块的形态/状态分讨:

再构造/判无解:

综上,做完了。简单维护即可做到线性。

代码

丑陋的 赛时代码。