码迷,mamicode.com
首页 > 其他好文 > 详细

GMA Round 1 新年祝福

时间:2018-02-27 14:56:04      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:完全   角度   大于   传送门   problem   个人   tar   一个人   收集   

传送门

 

 

新年祝福

  15个人聚集在一起,新年到来,他们每个人写下了一句新年祝福。大家把祝福收集起来,然后重新分回去。如果一个人拿到了自己写的祝福,他就会觉得很没有意思,因为得不到别人的祝福。要避免这种尴尬,一共会有多少种分配方案?

  一句话题意:求满足下列条件的n的排列个数:对于任意i(1≤i≤n),排列的第i个数不是i。本题中n=15。

  例如n=3时,满足条件的排列有2个:312和231

 

 

 

  设答案数列为$a_n$,容易知道$a_0=1$,$a_1=0$,下面我们证明$a_n=(n-1)(a_{n-1}+a_{n-2})$,利用这个式子就可以很容易算出$a_{15}$

  我们用这样一个角度看待n的一个排列:对于排列的第i个数$b_i$,我们连从i向$b_i$一条边,最后会得到一些环。例如2143对应两个环:1->2->1和3->4->3,长度均为2。31245对应3个环:1->3->2->1,4和5,长度分别为3、1、1。

  一个符合条件的完全错位的排列不能有长度为1的环。要统计n时的所有合法排列,我们可以把它们分成两类:n所在环长度为2和n所在环大于2。第一类我们可以枚举与n在同一个环上的数字,一共有n-1种可能,此后剩下的n-2个数字可以独立考虑,方案数为$a_{n-2}$,所以是$(n-1)*a_{n-2}$。第二类在删除掉n这个数以后仍然是合法排列,可以在n-1的所有排列上任意位置插入一个n来得到,共有n-1种插入位置,所以是$(n-1)*a_{n-1}$。因此$a_{n}=(n-1)(a_{n-1}+a_{n-2})。$

  定位:中等题、思维题

GMA Round 1 新年祝福

标签:完全   角度   大于   传送门   problem   个人   tar   一个人   收集   

原文地址:https://www.cnblogs.com/Enceladus/p/8478559.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!