設 \(f(k)\) 為強制選擇 \(k\) 個顏色出現 \(s\) 種,其餘任取的方案數。
則有\[f(k)=(m-k)^
\]不難看出,這個方案可能包括了超過 \(k\) 種顏色,也有重複的方案,所以恰有 \(k\) 個顏色出現 \(s\) 種的方案 \(ans_k\) 滿足
\[ans_k=\sum_^)}(-1)^f(i)
\]最終化簡得到
\[ans_k=\sum_^)}i!f(i)\cdot \over (i-k)!}
\]\(\text\) 卷積即可。
做容斥題時定義出的狀態本身就是有重複的,所以需要加加減減。
#include#define for(i,x,y) for(int i=(x),i##end=(y);i<=i##end;++i)
#define dor(i,x,y) for(int i=(x),i##end=(y);i>=i##end;--i)
using namespace std;
templateinline bool chk_min(t &x,const _t y)
ll inv(ll a,ll p)
}using namespace _maths;
namespace _polynomial
};int fac[n],ifac[n],f[m];
int a[m],b[m],c[m<<1];
int w[m];
int n,m,s,b;
ll ans;
ll com(int n,int m)
int main()
HAOI2018 染色 NTT,組合計數
對乙個長度為 n 的序列進行染色,有 m 種顏色。對一種方案,如果恰好出現 s 次的顏色總數為 k 則得分為 w k 求所有染色方案得分的總和。n leq 10 7,m leq 10 5,s leq 150 最大有效顏色數為 lim min m,n s 設恰好出現 s 次的顏色有至少 i 種的方案數...
bzoj5306 NTT 容斥原理 染色
description 傳送門 題解 upd 原來這是二項式反演來著qwq 貼一下容斥題的一點點做法.首先顯然先求方案數g i g i g i 表示只有i ii種出現了s ss次的方案數 那怎麼說也要求乙個f i f i f i 表示至少有i ii種出現了s ss次的方案數 f i cm i cn ...
HAOI2018 簡要題解
以前做過的 haoi2018 染色 haoi2018 蘋果樹暫時不更 haoi2018 字串覆蓋 已經棄療了。總體難度 medium 偏 easy,但是 luogu4495 haoi2018 奇怪的揹包 想不到是真的腦抽。可以在 找到。小 c 和小 g 經常在一起研究搏弈論問題,有一天他們想到了這樣...