【解题总结】Atcoder Beginner Contest 汇总

ABC 178 F Contrast

题意:给定两个长为 N N N 的不降序列 A A A B B B,问能否重排 B B B 使得 ∀ i , A i ≠ B i \forall i, A_i \neq B_i i,Ai=Bi。能的话给出方案。

方法一(假做法)

无解容易判定,只要有某个数在 A , B A, B A,B 中出现次数之和大于 N N N 就无解。

后面的我想了一个假做法:把所有出现过的数按照其在 A , B A, B A,B 中出现次数之和降序排列,然后按照此顺序把数依次放入要构造出的序列。每次放都优先放在那些于 A , B A, B A,B 中出现次数之和最多的数,在 A A A 中出现的位置。这可以用 set 维护。

这是有可能放到后面无解的。我的做法是先不管是否无解,把序列构造出来,最后找到那些不合法的位置,然后随机一个交换位置。最后全部交换成功了就有解了。

方法二

直接翻转 B B B,不合法的位置和两边交换一下。

你可能感兴趣的:(解题总结)