题目描述
废话不多说,反正小w要发喜糖啦!!
小w一共买了 块喜糖,发给了 个人,每个喜糖有一个种类。这时,小w突发奇想,如果这 个人相互交换手中的糖,那会有多少种方案使得每个人手中的糖的种类都与原来不同。
两个方案不同当且仅当,存在一个人,他手中的糖的种类在两个方案中不一样。
输入格式
第一行,一个整数
接下来 行,每行一个整数,第 个整数 表示开始时第 个人手中的糖的种类
对于所有数据,
输出格式
一行,一个整数 ,表示方案数模
样例输入
样例输出
解题思路
首先我们可以将喜糖颜色一样的人进行合并,他们都是等效的
我们通过 DP
求得 表示对于前 种糖果,至少有 人交换后糖果与之前相同
然后只要通过枚举 容斥即可求出答案
下面我们考虑如何进行 DP
,对于第 种糖果,我们枚举有 人交换后不变
同时我们要乘上一个组合数 , 表示有多少人拥有第 种糖果
最后其他人( 人) 即可直接排列
其中
可以将分母在 DP
过程中直接求出
代码
加载更多