【UOJ #214】合唱队形【min-max容斥】【DP】

Description

请去传送门阅读。

Solution

考虑\(Min-Max\)容斥,我们要求的是所有长为\(m\)的串成功匹配的时间的最小值的期望,将这个作为\(Min(S)\)

那么

\[ans=\sum_{T\subseteq S}(-1)^{|T|-1}E(Max(T)) \]

\(Max(T)\)就是\(T\)中所有串全部匹配的期望时间,将其转化为所有时刻没有成功匹配的概率之和,在\(t\)时刻没有成功匹配的概率,我们通过容斥没有匹配的位置数量来完成,设\(g(T)\)表示\(T\)中所有串全部匹配需要的课程数,\(sum\)为课程总数,即:

\[Max(T)=\sum_{t=0}^{\infty}\sum_{i=0}^{g(T)}(-1)^{i+1}\binom{g(T)}{i}(\frac{sum-i}{sum})^t\\ =\sum_{i=0}^{g(T)}(-1)^{i+1}\binom{g(T)}{i}\sum_{t=0}^{\infty}(\frac{sum-i}{sum})^t\\ =\sum_{i=0}^{g(T)}(-1)^{i+1}\binom{g(T)}{i}\frac{sum}{i} \]

于是直接枚举\(T\)即可达到\(\mathcal O(2^{n-m}nm)\)的复杂度。期望得分\(50\)分(我修改了\(subtask\))。

注意到\(g(T)\)相同的\(T\)贡献是完全相同的,考虑先计算出\(g(T)=k\)\(T\)的个数,考虑\(dp\),因为只有前\(m\)个串会影响当前串对\(g(T)\)的影响,所以设\(f_{i,s,j}\)表示考虑了前\(i\)个串,前\(m\)个串是否在\(T\)中的状态为\(s\)\(g(T)=j\)\(T\)的总数,直接枚举当前位置的串是否选择转移即可。复杂度为\(\mathcal O(2^m n^2m)\),与上一部分结合即可拿到满分。

code

posted @   cjTQX  阅读(111)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示