CSES3422_Third Permutation提示

25 阅读1分钟

考虑第1个位置到第n-2个位置,填这些位置的时候,剩余的数的数量大于等于3,而一个位置有两个数不让放,因此一定能找到能放的数。其中一种实现方法是,从第一个位置开始往后直到第n-2个位置,每次贪心地放最大的数。

最后两个位置呢?还剩下两个数,我们先随便安置这两个数到最后两个位置,如果第n-1个位置上填的数与a[n-1],b[n-1]发生了冲突,考虑将这个位置上的数x与第1到n-2位置中某个位置j上的数交换,则a和b的j位置都不能与x相同,且原本位置j上的数不能和a[n-1]或者b[n-1]相同,想一想,可选的j的数量(也就是n-2)超过几,以上交换一定能实现。对第n个位置,执行同样的交换策略。