QOJ.ac

QOJ

Type: Editorial

Status: Open

Posted by: jiangly

Posted at: 2025-12-14 06:52:54

Last updated: 2025-12-14 06:52:56

Back to Problem

题解

最优的方案一定是先不断提升自己的攻击力到最高,然后再去杀其他的怪。我们先假设每个怪都是最后杀的,然后对前面的部分进行 DP。

设 $dp_i$ 表示当前攻击力为 $i$,最少多受到多少伤害可以是攻击力提升到最高。

假设攻击力为 $i$ 时要杀一个血量是 $H$,攻击是 $j$ 的怪,那么贡献是 $dp_j+(\lceil H /i\rceil-\lceil H/maxatk\rceil)j $,枚举 $\lceil H/i\rceil =k$,那么要求的就是 $H\le ik$ 的怪,$c_j+kj$ 的最小值,可以用树状数组 + 凸包维护。枚举的复杂度是调和级数,假设值域都是 $O(n)$,总时间复杂度 $O(n\log ^3n)$。

Comments

No comments yet.