Luogu4707 重返现世
题意:有
每一轮会随机获得一个物品,获得物品
求收集到
答案对
- 前置知识:扩展 Min-Max 容斥。
我们设集合
那么
每一轮获得
记
套用扩展 Min-Max 容斥得:
左到右逐个加入物品,最终的贡献只和
令
最后把方案数乘以对应贡献求和,就得到答案。
转移:讨论选或不选当前物品
- 选:
- 不选:
为了节省空间,可以把第一维
复杂度
为了减少状态量,尝试把贡献塞到 DP 值中。
选择
应当选择后者,理由如下:
- 前者是某个东西的倒数,相加将会变得十分难以处理。
- 只有后者与
相关,而 显然是本题的突破口。
把后者加入 DP 值,看看会发生什么……
设
转移:考虑选或不选当前物品
不选:
选:转移开始不对劲了。
考虑原先的集合
们,全都加入一个元素后贡献变为 我们没有记录 ,组合数很难处理。
尝试把组合数拆开,得到
前面和
设
转移:考虑选或不选当前物品
- 不选:
- 选:
为了省空间,仍要把第一维滚掉。
时间复杂度
注意有