JZOJ 3466.选课(select)
来源:互联网 发布:mysql minpoolsize 编辑:程序博客网 时间:2024/04/20 08:34
Problem
Description
你真的认为选课是那么容易的事吗?HYSBZ的ZY同志告诉你,原来选课也会让人产生一种想要回到火星的感觉。假设你的一周有n天,那么ZY编写的选课系统就会给你n堂课。但是该系统不允许在星期i和星期i+1的时候选第i堂课,也不允许你在星期n和星期一的时候选第n堂课。然后连你自己也搞不清哪种选课方案合法,哪种选课不合法了。你只想知道,你到底有多少种合法的选课方案。
Input
有多组数据,请读到文件末结束。
对于每组数据仅一行,1个正整数 n。
Output
对于每组输出只有一行,1个非负整数,为选课方案数量 mod (10^9+7).
Sample Input
2
4
Sample Output
0
2
Hint
对于样例二:
周一上第二堂课,周二上第三堂课,周三上第四堂课,周四上第一堂课;
周一上第三堂课,周二上第四堂课,周三上第一堂课,周四上第二堂课。
共2种选课方案。
Data Constraint
对于第i组数据,n<=10*i, 1<=i<=3
对于100%的数据:1<=n<=100000
Solution
容斥原理,因为第i天和第i+1天不能选第i堂课,所以我们设选错课的数对为(i,i+1),那么n个数对便组成了一个序列:(1,2),(2,3),(3,4)…(n,1) 简单一点就是(1,2,2,3,3,….,n,1) 设选错k节课的方案数为W(k).那么刚好选错k节课就是在这个序列中选出k个数,且他们的位置两两互不相邻。这个序列实质是一个环。但我们可以想得简单一些。我们可以将这个环拆成一个序列。
设这个序列有2n-k+1个球,其中k个涂成黑色的。
●●○○○●○●
那么可以让除最右边的一个黑球外的所有黑球都往右吐一个白球。
●○●○○○○●○○●
这个序列有2n-k+1个元素,选k个,那么方案数就是
然而我们回到环的问题,有可能最后一个是黑球,且第一个是白球,这种情况是要舍去的。因为变成一个环后,这两个黑球相邻。第一个和最后一个若都涂,那么第二个和倒数第二个都不涂。因此,我们要从剩下的(2n-4)个球选出(k-2)个涂成黑色的。那么方案数就是
因为我们只选错了k节课,因此剩下的n-k节课可以随便选。即要乘上(n-k)!
此时W(k)=(n-k)!
容斥原理我在此不多说。
——2016.7.6
- JZOJ 3466.选课(select)
- 【JZOJ 3466】 选课 select
- 【JZOJ 3466】选课
- JZOJ 3418. 【NOIP动态规划专题】选课
- 【NOIP2013模拟联考6】选课(select)
- 选课
- 选课
- 选课
- 选课
- 选课
- 选课
- 选课
- 选课
- 选课
- 选课
- 选课了,选课了。
- 关于选课
- xmu1073 选课
- Ubuntu安装fcitx和搜狗输入法
- ASCII表
- Create a thread demo
- 在线渗透工具大全
- First Bad Version
- JZOJ 3466.选课(select)
- 年月日三级联动(纯JS)
- javascript策略模式(strategy)
- LeetCode - 345. Reverse Vowels of a String
- 【3003】&&【9105】高精度求积 【高精度压位】
- 区分各关系
- 勾股定理一日一证连载44
- NOIP 2010 关押罪犯
- 主席树模板求不带修改的区间k大