@y20070316
2017-04-25T08:28:45.000000Z
字数 1962
阅读 907
题目精选 容斥原理 组合数学
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=4714
题解: https://zyqn.tech/?p=3158
我们定义 为 个数的环排列数.
我门固定第一个位置不动, 所以
我们定义 为 个数的错位排列数.
枚举 所在的连通块的大小, 进行使用递推的方法求解.
二项式反演:
我们考虑求解 个元素的排列方案数.
方法1:
方法2: 枚举错位的个数, 其余在原本的位置上.
先分析一下两个条件分别是什么意思.
条件1: 错位排列.
条件2: 将一个排列 看做一个置换, 那么要求置换存在一个循环节的大小为 .
所以
考虑如何计算 .
我们可以使用容斥原理: 强制存在一个循环节的大小为 的方案数, 减去强制两个循环节大小为 的方案数, 加上强制存在三个循环节大小为 的方案数,...,加(或减)上强制存在 个循环节大小为 的方案数.
那么, 如果强制存在 个循环节大小为 的方案数能在 算出来, 就可以在 的复杂度内算出答案了.
考虑强制存在 个循环节大小为 的方案数如何计算:
这道题我之所以没想到, 是因为不知道怎么求 , 始终想着用已有的结论来求, 没想到可以用陌生的东西求陌生的东西, 直接递推.
