CF1743E FTL

题意

有两艘飞船,第 i 艘飞船(i∈[1,2])的攻击力为 pi​,每一次攻击的充能时间为 ti​,一开始两艘飞船没有充能。

现在要打败敌方飞船,敌方飞船的血量为 h,防御力为 s。对于一次攻击力为 P 的攻击,敌方飞船的血量会减少 (P−s)。每一次攻击可以是一艘飞船单独攻击,也可以是两艘飞船同时攻击(当一艘飞船完成充能后,可以等待另一艘飞船充能,然后再一起攻击)。两艘飞船一起攻击的攻击力为 p1+p2​。

打败敌方飞船的条件是使得敌方飞船的血量小于等于 0。现在依次给出 p1,t1,p2,t2,h,s ,求出最少需要多少时间能够打败敌方飞船。

思路
考虑到任意时刻若两激光同时发射,则递归变为 h 更小的子问题。因此,设 fi​ 表示初始两激光均没有充能时,打出 i 伤害的最少时间。

假设在同时发射前两激光均有空闲时间,则同时减小空闲时间可得伤害相同且时间更少的方案。因此,在同时发射激光前,至少一个激光没有空闲时间。

直接枚举其发射次数即可得到 O(h2) 解法,因为每个激光的发射次数显然不会超过 h。设时间为 t=kt1 或 t=kt2​,ci=⌊t/ti⌋,则当 c1,c2>0 时才会同时发射。因此伤害为 c1p1+c2p2−(c1+c2−[c1,c2>0])s。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值