信息
- ID
- 1643
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
若 A=B,答案显然为 Yes。
当 K=1 时,一次操作只能扩张相邻的同值段,所以 A 的游程压缩序列只能删除若干项而不能新增;反之,可以依次扩张保留下来的段。因此可行当且仅当 B 的游程压缩序列是 A 的游程压缩序列的子序列。
当 K≥2 且 A=B 时,逆向看操作:若 Bi=Bj 且 ∣i−j∣≤K,就能把其中一个位置改成任意通配值;借助通配值可以交换相邻元素并逐步消去多余副本。于是可行的充要条件是 B 的每个值都在 A 中出现,并且 B 中存在距离不超过 K 的一对相等值。
用最近出现位置检查重复对,并用布尔数组检查值域,时间复杂度为 O(N),空间复杂度为 O(N)。