BZOJ 4665 小w的喜糖 dp,容斥

2021-07-23 14:02:30 字數 505 閱讀 4693

……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,列舉乙個...