小w的喜糖(candy)】的更多相关文章

小w的喜糖(candy) 题目描述 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那会有多少种方案使得每个人手中的糖的种类都与原来不同. 两个方案不同当且仅当,存在一个人,他手中的糖的种类在两个方案中不一样. 输入 第一行,一个整数n. 接下来n行,每行一个整数,第i个整数Ai表示开始时第i个人手中的糖的种类. 输出 一行,一个整数Ans,表示方案数模1000000009. 样例输入 6 1 1 2…
4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 120  Solved: 72[Submit][Status][Discuss] Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那会有多少种方案使得每个人手中的糖的种类都与原来不同. 两个方案不同当且仅当,存在一个人,他手中的糖的种类在两个方案中不一样. In…
4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 222  Solved: 130[Submit][Status][Discuss] Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那会有多少种方案使得每个人手中的糖的种类都与原来不同. 两个方案不同当且仅当,存在一个人,他手中的糖的种类在两个方案中不一样. I…
4665: 小w的喜糖 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 94  Solved: 53 Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那会有多少种方案使得每个人手中的糖的种类都与原来不同. 两个方案不同当且仅当,存在一个人,他手中的糖的种类在两个方案中不一样. Input 第一行,一个整数n 接下来n行,每行一个整数…
[BZOJ4665]小w的喜糖 Description 废话不多说,反正小w要发喜糖啦!! 小w一共买了n块喜糖,发给了n个人,每个喜糖有一个种类.这时,小w突发奇想,如果这n个人相互交换手中的糖,那会有多少种方案使得每个人手中的糖的种类都与原来不同. 两个方案不同当且仅当,存在一个人,他手中的糖的种类在两个方案中不一样. Input 第一行,一个整数n 接下来n行,每行一个整数,第i个整数Ai表示开始时第i个人手中的糖的种类 对于所有数据,1≤Ai≤k,k<=N,N<=2000 Output…
小w的喜糖 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=4665 数据范围:略. 题解: 二项式反演裸题. $f_{i,j}$表示,前$i$种钦定$j$拿到自己种类糖果的方案数. 求完了之后可以二项式反演回来即可. 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int mod = 1000000009 ; int n, m; ll…
Sol DP+容斥. 这就是一个错排的扩展...可是想到容斥却仅限于种数的容斥,如果种数在一定范围内我就会做了QAQ. 但是容斥的是一定在原来位置的个数. 发现他与原来的位置无关,可以先把每个同种的糖看成本质不同的来DP. \(f[i][j]\) 表示前 \(i\) 种糖,一定有 \(j\) 个不合法的方案数. 然后在第 \(i\) 种内枚举有几种不合法的状态.这样就可以从前 \(i-1\) 种转移了. 然后随便搞搞组合数,还有线性计算逆元,上篇随笔里提到了. Code /***********…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4665 题解: 容斥,dp令 v[i] 表示原来拥有i类糖果的人数. (一个套路,首先把每个糖果看成互不相同的,(最后再来除以 v[i]!,把同种糖果看成相同的) )定义 dp[i][j]表示前i类糖果,有j个人的糖果和原来的一样,其他 N-j 个人暂时不拿糖果的方案数.这个的转移如下:对于已经确定的 i,j,枚举一个 k表示原来拥有的是第i类糖果的k个人任然拿到的是第i类糖果. ${dp[…
对于这道题,首先每个人的位置并不影响结果 所以我们可以将相同颜色糖果的人放在一块处理 设 $f_{i,j}$ 表示处理到第 $i$ 种糖果至少有 $j$ 人的糖果和原先的类型相同 枚举当前种类中不满足要求的个数 则有 $$f_{i,j}=\sum_{k=0}^{c_i} f_{i-1,j-k}\binom{c_i}{k} \dfrac{1}{(c_{i}-k)!}$$ $$ans=\sum_{i=0}^n {(-1)^if_{n,i}(n-i)!}$$ $c_i$ 表示第 $i$ 种糖的个数,这…
考虑枚举哪些人一定不合法,那么方案数可以通过简单的排列组合算出. 于是设$f[i][j]$表示前$i$种糖果,一共有$j$个人一定不合法的方案数,但是这样并不能保证其他人一定合法,所以需要进行容斥. 最后将答案除以每种糖果数量的阶乘,即可保证本质不同. 时间复杂度$O(n^2)$. #include<cstdio> const int N=2005,P=1000000009; int n,i,j,k,x,a[N],C[N][N],fac[N],inv[N],f[N][N],tmp,ans; i…