将宝箱分成两类:pi≥1 与 pi=0。
先把所有 pi≥1 的宝箱全部打开。理由:这类宝箱不会减少当前体力(pi=1 不变,pi>1 增加),越早开越能“解锁”更多后续机会。打开这些宝箱后的剩余体力:
t=1+pi≥1∑(pi−1)然后在 pi=0 的宝箱中,按 gi 从大到小选取前 min(t,m) 个(m 为 pi=0 的宝箱个数)。
你是一名探险家,在古代遗迹中发现了一些宝箱。你可以按任意顺序打开它们。初始时你拥有 1 点体力。每打开一个宝箱需要消耗 1 点体力,打开后会获得若干金币,并可能获得额外体力(可能为 0)。额外体力可以累积,用于继续开启更多宝箱。
已知所有宝箱的金币奖励和体力奖励,请求出在体力耗尽前,最多可以获得的金币总数。
约束:宝箱数量 n 满足 1≤n≤1000;每个宝箱的金币数 gi 和额外体力 pi 满足 0≤gi,pi≤1000。
第一行包含一个整数 n (1≤n≤1000),表示宝箱的数量。 接下来 n 行,每行包含两个整数 gi 和 pi (0≤gi,pi≤1000),分别表示打开第 i 个宝箱能获得的金币数和额外体力值。
开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册