题目大意
元元曾经是班长。在校运动会上,元元的班要进行队列表演。元元要选出 /(2/times n/) 名同学编队,每人都被编上一个号,每一个从 /(1/) 到 /(n/) 的自然数都被某 /(2/) 名同学佩戴,现在要求将他们排成一列,使两个编号为 /(1/) 的同学中间恰好夹 /(1/) 名同学,两个编号为 /(2/) 的同学中间恰好夹 /(2/) 名同学,/(/cdots/),两个编号为 /(n/) 的同学中间恰好夹 /(n/) 名同学,元元希望知道这样的排法能否实现。
如果不能实现,输出 No Solution.
;可以实现则输出字典序最大的方案。
题目分析
dfs 求解是显然的,这里主要来证明无解情况。
设每个数字的位置分别为:/(a_1,a_2,/cdots,a_n/),其中 /(a_i/) 表示 /(i/) 的位置。
这 /(2/times n/) 个整数分别为 /(a_1,a_2,/cdots,a_n,a_1+1+1,a_2+2+1,a_3+3+1,/cdots,a_n+n+1/)。
所以有:
/[/sum/limits_{i=1}^na_i+/sum/limits_{i=1}^n(a_i+i+1)=/sum/limits_{i=1}^{2/cdot n}i
/]
/[2/cdot(/sum/limits_{i=1}^na_i)+/dfrac{n/cdot(n+1)}{2}+n=/dfrac{2/cdot n/cdot(2/cdot n+1)}{2}
/]
/[2/cdot(/sum/limits_{i=1}^na_i)=/dfrac{4/cdot n^2+2/cdot n-n/cdot(n+1)-2/cdot n}{2}
/]
/[4/cdot(/sum/limits_{i=1}^na_i)=n/cdot(3/cdot n – 1)
/]
所以 /(n/cdot(3/cdot n-1)/) 是 /(4/) 的倍数。/(n/bmod4/) 有且仅有 /(0,1,2,3/) 这四种情况,故 /(n/cdot(3/cdot n+1)/bmod 4=0,2,2,0/)。显然余数为 /(0/) 是方能满足条件,所以得出结论:
当 /(n/bmod 4=1/) 或 /(2/) 时无解。
原创文章,作者:6024010,如若转载,请注明出处:https://blog.ytso.com/268190.html