每年noi还真是会留道水题给大家哈皮哈皮,今年也不例外
好了,废话不多说,进入这道题
首先容易将原序列和新序列弄成一个二分图模型,因为都是n的排列,那么必须一一对应
题目其实就是求一个字典序最小的完备匹配
这个嘛,不用官方题解那么麻烦的搞法,就按字典序从小到大连边,然后字典序从大到小for原序列那一排点直接匈牙利就可以了
可以这样理解,我们去匹配一个点,先匹配上了一条边后面的就不会去试了,所以对于每个原序列中的点连出去的边要按字典序从小到大
而for一排点的时候,越靠后的点就越不会被别的点增广掉,也就是越靠后for的点“优先级”越高,越后面的点连出字典序小的边的“权利”更大,也就是保证了字典序最小
对了,如果不存在完备匹配就是No Answer
代码:
不知道这个做法是不是完全正确的,但还是ac了 -_-!