……qwq做的第一發這種題
f[i][j]表示分配了前i種,至少有j個人不合法,然後容斥一下就好
最後統計的時候,剩下的n-j個人的分配方法是(n-j)!除以每種糖剩餘數量的階乘的積,這個積直接在dp的時候算好
#include#define mod 1000000009
#define maxn 2005
using namespace std; int n;
int x[maxn];
int c[maxn][maxn];
int jc[maxn],_jc[maxn];
int f[maxn][maxn];
inline int pow(long long d,long long c)
inline void plus(int &a,const int b)
inline void init()
int read_x;
int main()
BZOJ4665 小w的喜糖 DP
對於這道題,首先每個人的位置並不影響結果 所以我們可以將相同顏色糖果的人放在一塊處理 設 f 表示處理到第 i 種糖果至少有 j 人的糖果和原先的型別相同 列舉當前種類中不滿足要求的個數 則有 f sum f binom dfrac k ans sum n n i c i 表示第 i 種糖的個數,這...
BZOJ4665 小w的喜糖
考慮列舉哪些人一定不合法,那麼方案數可以通過簡單的排列組合算出。於是設 f i j 表示前 i 種糖果,一共有 j 個人一定不合法的方案數,但是這樣並不能保證其他人一定合法,所以需要進行容斥。最後將答案除以每種糖果數量的階乘,即可保證本質不同。時間複雜度 o n 2 includeconst int...
BZOJ 4665 小w的喜糖
題鏈 題解 容斥,dp 令 v i 表示原來擁有i類糖果的人數。乙個套路,首先把每個糖果看成互不相同的,最後再來除以 v i 把同種糖果看成相同的 定義 dp i j 表示前i類糖果,有j個人的糖果和原來的一樣,其他 n j 個人暫時不拿糖果的方案數。這個的轉移如下 對於已經確定的 i,j,列舉乙個...