dmy NOI 长训 3.23
Apparently Make UTPC
给定三个正整数序列:
- \(A = (A_1, A_2, \dots, A_X)\),长度为 \(X\)
- \(B = (B_1, B_2, \dots, B_Y)\),长度为 \(Y\)
- \(C = (C_1, C_2, \dots, C_Z)\),长度为 \(Z\)
且满足 \(X \leq Y \leq Z\)。
你需要重排序列 \(C\) 的元素,使得重排后的序列同时包含 \(A\) 和 \(B\) 作为连续子序列。
请判断该目标是否可以实现:
- 如果可以实现,求出重排后字典序最小的序列 \(C\);
- 如果无法实现,输出对应结果。
共给定 \(T\) 组测试用例,需要对每组用例分别求解。
怎么会了。
首先特判 \(B\) 包含 \(A\),单独计算 \(A\) 和 \(B\) 无交,特判无解。然后我们假定 \(A\) 在 \(B\) 前面,可以求出最大的 \(k\) 使得 \(A_{X-k+1}\cdots\A_X=B_1\cdots B_k\),对着这个后缀跑 border 可以求出所有可能的 \(A\) 和 \(B\) 交集长度。然后

浙公网安备 33010602011771号