qbxt 4179 积木中赛(block)

原题

小 P 准备了一次预测活动,每个参与活动的人都可以在 PPP 队获胜,GGG 队获胜和平局三种结果中选择自己要预测的一种。如果第 i 个人预测正确,那么小 P 需要付给他 ai 元,否则他需要给小 P 付 bi 元。小 P 目前已经收到了 n 个人报名参加活动的信息,并知道他们每个人选择的结果与对应的 ai,bi,现在小 P 可以任意选择是否允许某个人参加活动,他希望知道最坏情况下他能赚到的钱最多是多少。
n300,ai,bi300

假设 A1,A2,A3 是三种情况中赢得比赛要付的钱, B1,B2,B3 是输掉比赛要付的钱,那原题即要求:

max{min(B1+B2A3,B1+B3A2,B2+B3A1)}

这是一个最大值最小的一个问题,但如果我们考虑二分答案后就会发现这个东西没法做了,因为对于里面的任意一个式子,他和 ci=1,ci=2,ci=3 的三个状态都有关,我们无法在 dp 中低复杂度记录这些信息

我们现在想要干什么?我们现在想要对于 ci 相等的情况互相独立,因此我们考虑化简一下式子:

(1)max{min(B1+B2A3,B1+B3A2,B2+B3A1)}(2)=max{min(B1+B2+B3A3B3,B1+B2+B3A2B2,B1+B2+B3A1B1)}(3)=max{B1+B2+B3max(A1+B1,A2+B2,A3+B3)}

我们发现这么一番转变后里面的式子里 ci 相等的部分就被分开了,因此我们就可以分开 dp

具体的,对于 ci 相等的部分我们直接 01 背包处理,设 dpo,i 表示选了 cj=oaj+bj=i 的人时 bj 最大是多少。统计答案时可以枚举一个 l=max(A1+B1,A2+B2,A3+B3) ,更新答案为 ansmaxi=0ldp1,i+maxi=0ldp2,i+maxi=0ldp3,il

posted @   FOX_konata  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示