ABC 314

F

每次相当于创建一个包含 pi,qi 各自所在集合的点的大点 u,然后 upi,qi 各自所在集合连边,边权就是胜率。

连完之后求每个点到根结点({1n})的路径边权和。

G

定义 Li 为杀至少 i 个怪物至少需要多少护身符。如果求出 L0Ln,可以二分求出问题的答案。

先固定 i,看怎么求 Li。我们不求 Li,求 mLi,即杀至少 i 个怪物至多不选多少护身符。

cj1i 中类型为 j 的怪物攻击力总和。如果不选 j 护身符,意味着承担 cj 的伤害。可以贪心,优先抛弃 c 较小的护身符,直到抛弃的护身符 c 总和超过 H1。此时的数量就是 mLi

知道了怎么求一个 Li,看一下怎么求连续的 L。发现当 ii+1c 数组其实只有 cb(i+1) 增加了。

我们可以用两个平衡树维护当前已选护身符的集合 S 和未选集合 T,每次有 c 增加了,只会使一个元素变动。

posted @   FLY_lai  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示