Loading

题解:[NWRRC 2021] First to Solve

根据期望线性性,可以转化为求第 \(i\) 个人获得第 \(x\) 题首杀的概率,进一步转化为第 \(i\) 个人在时间 \(t\) 获得 \(x\) 题首杀的概率。设第 \(i\) 个人能解决 \(c_i\) 题(即 \(c_i\)\(a_{i,j}\) 非零),则总方案数是 \(\prod c_i!\),所以所有概率可以转化为求方案数。

\(i\) 个人在时间 \(t\) 获得 \(x\) 题首杀,即要求第 \(i\) 个人在时间 \(t\) 通过 \(x\) 题,且其余人 在 \(\ge t\) 通过 \(x\)\(\ge t\) 的时间可以是 \(\mathcal O(mk)\) ,所以考虑转化为求每个人在 \(< t\) 的时间内通过 \(x\) 题的方案数。

枚举 \(x\),只需要求出所有第 \(i\) 个人在时间 \(t(0<t\le k)\) 解决第 \(x\) 题的方案数,然后通过一些前缀和即可算出答案。

直接做背包复杂度太高,考虑回退背包。先求出 \(f_{i,j,t}\) 表示第 \(i\) 个人,解决了 \(j\) 个题,总用时为 \(t\),选出这 \(j\) 个题的方案数。那么对于每个 \(x\),设 \(g_{i,j,t}\) 表示第 \(i\) 个人,解决了 \(j\) 个题,总用时为 \(t\)且不包含第 \(x\),选出这 \(j\) 个题的方案数,则可以得到 \(g_{i,j,t}=f_{i,j,t}-g_{i,j-1,t-a_{i,x}}\)。枚举第 \(i\) 个人完成第 \(x\) 题时共完成了几题,可以得到第 \(i\) 个人在时间 \(t\) 解决第 \(x\) 题的方案数为:

\[\sum_{j=0}^{c_i-1}g_{i,j,t-a_{i,x}}\times j!\times(c_i-1-j)! \]

预处理背包和后面计算答案复杂度均为 \(\mathcal O(nm^2k)\)

posted @ 2026-04-27 15:46  complexor  阅读(6)  评论(0)    收藏  举报