GMA Round 1 新年祝福
新年祝福
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 新年祝福的更多相关文章
- GMA Round 1 新年的复数
传送门 新年的复数 已知$\left\{\begin{matrix}A>B>0\\ AB=1\\ (A+B)(A-B)=2\sqrt{3}\end{matrix}\right.$ 求$(A ...
- GMA Round 1
学弟说我好久没更blog了. 因为自己最近其实没干什么. 所以来搬运一下GMA Round 1 的比赛内容吧,blog访问量.网站流量一举两得. 链接:https://enceladus.cf/con ...
- GMA Round 1 大吉大利,晚上吃鸡
传送门 大吉大利,晚上吃鸡 新年走亲访友能干点啥呢,咱开黑吃鸡吧. 这里有32个人,每个人都可能想玩或者不想玩,这样子一共有$2^{32}$种可能.而要开黑当然得4人4人组一队(四人模式),所以说如果 ...
- GMA Round 1 YGGDRASIL
传送门 YGGDRASIL 在YGGDRASIL世界,一年有213天. Demiurge推广种植了一种植物,姑且称之为“黄金果”,它第一期生长需要140天,此后第i期生长需要的天数$a_i$满足$a_ ...
- canvas动画效果新年祝福话语
html代码 <ul id="ul"></ul> css代码 * { margin:; padding:; } ul { list-style: none; ...
- GMA Round 1 数列与方程
传送门 数列与方程 首项为1,各项均大于0的数列{$a_n$}的前n项和$S_n$满足对于任意正整数n:$S_{n+1}^2-2*S_{n+1}*S_{n}-\sqrt{2}*S_n-1=0$,求$a ...
- GMA Round 1 离心率
传送门 离心率 P是椭圆$\frac{x^2}{a^2}+\frac{y^2}{b^2}=1$上一点,F1.F2为椭圆左右焦点.△PF1F2内心为M,直线PM与x轴相交于点N,NF1:NF2=4:3. ...
- GMA Round 1 波动函数
传送门 波动函数 f(x)是一个定义在R上的偶函数,f(x)=f(2-x),当$x\in[-1,1]$时,f(x)=cos(x),则函数$g(x)=f(x)-|cos(\pi x)|$,求g(x)在[ ...
- GMA Round 1 空降
传送门 空降 在一块100m*100m的平地上,10位战士从天而降!他们每人会均匀随机地落在这个地图上的一个点. 紧随其后,BOSS随机出现在这个地图上的某一点,然后它会奔向位于左上角的出口,而战士们 ...
随机推荐
- .Net Core下发送WebRequest请求的两种方式
1.使用RestSharp.NetCore 2.使用WebApi请求方式
- 基于AspNet Core2.0 开发框架,包含简单的个人博客Demo
大家好,最近离职了,利用闲暇时间就捣鼓了一个基于AspNet Core开发框架,分享出来希望能给AspNet Core学者带来一些帮助,同时也能跟大家一起学习.当然了,由于我的个人技术及经验的有限,框 ...
- Codeforces 803G Periodic RMQ Problem 线段树
Periodic RMQ Problem 动态开点线段树直接搞, 我把它分成两部分, 一部分是原来树上的, 一部分是后来染上去的,两个部分取最小值. 感觉有点难写.. #include<bits ...
- Codeforces 639D Bear and Contribution
Bear and Contribution 对于对于5余数为, 0, 1, 2, 3, 4的分别处理一次, 用优先队列贪心. #include<bits/stdc++.h> #define ...
- 2018牛客网暑假ACM多校训练赛(第十场)D Rikka with Prefix Sum 组合数学
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round10-D.html 题目传送门 - https://www.n ...
- Codechef CHSIGN Change the Signs(May Challenge 2018) 动态规划
原文链接http://www.cnblogs.com/zhouzhendong/p/9004583.html 题目传送门 - Codechef CHSIGN 题意 第一行,一个数$T$,表示数据组数. ...
- 三色抽卡游戏 博弈论nim
你的对手太坏了!在每年的年度三色抽卡游戏锦标赛上,你的对手总是能打败你,他的秘诀是什么? 在每局三色抽卡游戏中,有n个卡组,每个卡组里所有卡片的颜色都相同,且颜色只会是红(R).绿(G).蓝(B)中的 ...
- Java中System类的相关应用
1.Runtime: public class RuntimeDemo { public static void main(String[] args) { Runtime runtime=Runti ...
- C语言中的模运算-hdu6124(打表,找规律)
题目链接:https://vjudge.net/problem/HDU-6124 题目描述: 题目大意就是给你一个数,判断这个数 % 其它数后共有几种结果. 这题对我来说最大的难点是我不太知道每个数 ...
- Hdu-2008
杭电OJ-2008 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2008 #include<stdio.h> int main() { i ...