一道很好的分类讨论题。
首先你想这个操作对于数的种类只会减少不会增多,所以如果 \(b\) 有的 \(a\) 一定有。
然后想,如果 \(b\) 有相同的段,显然段内只需要一个复位即可,剩下的都可以赋值得到。
你发现现在限制你的操作在什么,在与你不能将这些数很机动的排列,我们得出一个很强的性质:
- 当 \(k > 1\) 时,若有一个机动点,则可以任意交换相邻两数(想一想就感觉很合理)。
这个机动点需要满足的条件是 \(b\) 所在的范围为 \(k\) 的区间中有与它相同的值可以赋值。
当 \(k = 1\) 时,不难发现只会想连续段长度改变,具体顺序不变,简单做做即可。
遇到这种题目要想一想宽泛限制怎么做,操作的关键在哪里,与目标有什么关系。