1. 程式人生 > >洛谷 P4707 【重返現世】

洛谷 P4707 【重返現世】

題目分析

題目就是求第K種原料的出現期望時間。

考慮廣義min-max容斥。

\(\text{kthmax}(S)=\sum\limits_{T\subseteq S}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T)\)

顯然\(\min(T)=\frac{m}{\sum\limits_{i\in S}p_i}\)

發現\(m\)的範圍很小,那麼我們可以考慮設狀態dp算貢獻。

\(f_{j,k}\)表示對於集合\(|S|\)\(j=\sum\limits_{i\in S}p_i\),集合大小為\(k\)的方案數。

轉移顯然。

但是時間複雜度為\(O(n^2m)\)

,難以ac。

觀察到還有\(|n-k|<=10\)的條件,考慮改變狀態。

\(f_{j,k}\)表示對於集合\(S\)\(j=\sum\limits_{i\in S}p_i\)

組合數下標為\(k\)\(\sum\limits_{T}(-1)^{|T|-k}\binom{|T|-1}{k-1}\min(T)\)的值。

對於一個概率為\(v\)的新物品:

如果不加入,直接累加前面的答案。

如果加入,那麼答案應該是從\(f_{j-v,k-1}\)轉移過來。

我們觀察一波式子(標解)

我們用\(g_{i,j}\)表示對於集合\(S\)\(|S|=i\)\(j= \sum\limits_{k\in S}p_k\)

的方案數。

對於\(f_{j-v,k}\)

\(f_{j-v,k-1}=\sum\limits_{i}(-1)^{i-k+1}\binom{i-1}{k-2}g_{i,j-v}\)

\(=-\sum\limits_{i}(-1)^{i-k}\binom{i-1}{k-2}g_{i,j-v}\)

增加一個物品後:

\(\triangle f_{j,k}=\sum\limits_i(-1)^{i-k+1}\binom{i}{k-1}g_{i,j-v}\)

\(=-\sum\limits_i(-1)^{i-k}\binom{i}{k-1}g_{i,j-v}\)

兩式相減:

\(\triangle f_{j,k}-f_{j-v,k-1}=-\sum\limits_i(-1)^{i-k}\binom{i-1}{k-1}g_{i,j-v}\)

\(=-f_{j-v,k}\)

因此我們得到了遞推式:

\(f_{j,k}=f'_{j,k}+f'_{j-v,k-1}-f'_{j-v,k}\)

因此我們就可以\(O(m*(n-k))\)解決dp。

答案就是\(\sum\limits_{i=1}^{m}\frac{m}{i}f_{i,k}\)