NKOJ1236 排队


题目大意

元元曾经是班长。在校运动会上,元元的班要进行队列表演。元元要选出 /(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

(0)
上一篇 2022年6月19日
下一篇 2022年6月19日

相关推荐

发表回复

登录后才能评论