題解 P4491 HAOI2018 染色

2022-05-19 08:45:08 字數 2099 閱讀 6828

長度為\(n\)的序列, 每個位置都可以被染成\(m\)種顏色中的某一種.

如果恰 好出現了\(s\)次的顏色有\(k\)種, 會產生\(w_k\)的貢獻.

對於所有可能的染色方案, 他能獲得的愉悅度的和對 \(1004535809\)取模的結果是多少.

最多有\(lim=\min(m,\frac)\)種顏色。

記最少選\(i\)種的答案為\(f[i]\),有:

\[f[i]=\tbinom\frac(m-i)^

\]容斥一下得到答案為:

\[ans[i]=\sum_^(-1)^\tbinomf[j]

\]拆開來:

\[ans[i]=\sum_^(-1)^\fracf[j]

\]\[ans[i]\times i!=\sum_^\frac}\times f[j]j!

\]記\(g[i]=\frac,f[i]=i!\times f[i]\)

\[ans[i]\times i!=\sum_^g[j-i]\times f[j]

\]翻轉\(f\),得到:

\[ans[i]\times i!=\sum_^g[j-i]\times f[lim-j]

\]卷積顯而易見。

#includenamespace in

template inline void read(t& t)

while(isdigit(ch))if(f)t=-t;

} template inline void read(t& t, args&... args)

}namespace out

inline void putc(const char &x)

template void write(t x) while (x);}elsewhile(x);}

while (len>=0)putc(buf[len]),--len; }}

using namespace std;

templatestruct modint

modint&operator = (int o)

modint&operator +=(modinto)

modint&operator -=(modinto)

modint&operator *=(modinto)

modint&operator ^=(int b)

modint&operator /=(modinto)

modint&operator +=(int o)

modint&operator -=(int o)

modint&operator *=(int o)

modint&operator /=(int o)

templatefriend modintoperator +(modinta,i b)

templatefriend modintoperator -(modinta,i b)

templatefriend modintoperator *(modinta,i b)

templatefriend modintoperator /(modinta,i b)

friend modintoperator ^(modinta,int b)

friend bool operator ==(modinta,int b)

friend bool operator !=(modinta,int b)

bool operator ! ()

modintoperator - ()

modint&operator++(int)

};const int n=1e7+5;

const int mod=1004535809;

const modintgg=3,ginv=modint(1)/3;

struct poly

int size()

void resize(int n)

void reverse()

};int rev[n];

inline int ext(int n)

inline void ntt(poly&a,int k,int typ)

} }if(typ<0)

signed main()

洛谷P4491 HAOI2018 染色

題面 題解 首先這個 恰好 看著很不爽,換成 至少 設 f i 表示顏色個數為 s 的顏色至少有 i 個的方案數。考慮如何計算。1.m 個顏色選了 i 個,binom 2.i 個顏色選了恰好 s 個,其他的 m i 個顏色任選 frac i times fac n i s 3.剩下 n i s 個位...

HAOI2018 簡要題解

以前做過的 haoi2018 染色 haoi2018 蘋果樹暫時不更 haoi2018 字串覆蓋 已經棄療了。總體難度 medium 偏 easy,但是 luogu4495 haoi2018 奇怪的揹包 想不到是真的腦抽。可以在 找到。小 c 和小 g 經常在一起研究搏弈論問題,有一天他們想到了這樣...

題解 HAOI2018 反色遊戲

題目傳送門 給出乙個 n 個點 m 條無向邊的圖,每個點都有乙個 in 0,1 的權值,每次可以選擇一條邊,然後將該邊相連兩點權值異或上 1 問有多少種選擇方法使得每個點的權值都變為 0 每條邊只能選擇一次 但是這個問題太簡單了,所以你要求刪掉每個點以及它連出的邊之後的答案。有 t 組資料,t le...