B 梅开二度 大致题意:向数组 中添加一个数,使得集合 构成一个排列。 想法: 将集合 分成集合 和集合 。一开始 。 集合 构成一个排列 等价于 。 由于向数组 中添加一个数,最多使集合增加两个数,所以如果一开始的集合 元素的数量小于 ,则输出 。 若 ,说明只差一个数 ,向数组 的最后添加 ,就可以补全 ,构成排列,所以输出 。 若 ,此时 ,若可以将 中的唯一一个元素拆成集合 中未出现的两个元素,则输出 ,否则输出 。 #include <bits/stdc++.h> #define int long long using namesp...