【YBT2023寒假Day7 B】打怪兽(cdq分治)(斜率优化)
打怪兽
题目链接:YBT2023寒假Day7 B
题目大意
有 n 个怪,每个怪有攻击力和血量。
你每次可以选一个怪打 b 的伤害,如果一个怪的血量小于等于 0 就死了。
然后每次你打完之后所有活着的怪会各打你一次。
一开始你可以选两个怪秒杀,问你打死所有怪需要的最小血量。
思路
首先把血量 改成要打死的次数 (就是 )
首先不考虑秒杀,其实是一个经典的排序问题。
(你直接看谁先就直接假设只有这两个怪,谁先打掉的血少谁就放前面)
(至于原因把式子列一下就看得出来)
接下来考虑看秒杀,考虑秒掉之后减少的费用。
我们假设 为秒掉的两个,那减少的费用是:
(第一个和第三个是它打你的次数减少了,第二个和第四个是你打它的时间省了使得后面的怪打你的次数少了)
会发现可以写成 的形式(其实 是同一个数组,都是 ,前缀后缀预处理一下就行)
那如果我们枚举一个 ,它就会变成要求 的最大值,那这个东西是线段,可以维护上凸壳 变大,在凸壳上二分(也可以直接指针找)最大值加上点。
但是一个问题是 不能同时递增。
于是这种两个变量的考虑通过 cdq 分治减少一个。
大概是给前面一半按 排序,后面一半按 排序。
然后推 这个式子得到比较方式。(就是斜率优化)
代码
__EOF__

本文作者:あおいSakura
本文链接:https://www.cnblogs.com/Sakura-TJH/p/YBT2023Day7_B.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Sakura-TJH/p/YBT2023Day7_B.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-02-07 【YBT2022寒假Day2 B】【luogu CF809D】模糊序列 / Hitchhiking in the Baltic States(平衡树优化DP)(fhq-Treap)
2022-02-07 【YBT2022寒假Day2 A】期望旅行(Dij)(期望DP)