目录
题目
思路
Code
题目
题目内容:
你为一款动作游戏设计战士角色的技能。战士每个技能会消耗不同能量,释放技能有两个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态,也就是分段。
战士有一项爆发技巧,在单次战斗中有一次能量上限翻倍至 2k 的机会。此项场景下战士需使用连续的 w 个技能,技能数量限制 m 依然生效。
作为战术分析师,你需要为战士规划最优的技能释放序列。给定一套技能的能量消耗列表 a,请计算在合理使用爆发机会或选择不使用的前提下,释放完所有技能所需的最少分段数,也就是最少调息次数。
若存在某个技能的能耗过高,即使开启爆发也无法释放,即大于 2k,则判定为无解,返回 -1。
输入描述:
第一行输入三个正整数 k、m、w。k 表示能量上限,m 表示单次调息最大技能数,w 表示爆发持续技能数。
第二行输入技能能量消耗列表 a,元素之间使用英文逗号分隔。技能数量 n 为 a 的长度。
数据范围为 1 <= w <= n,1 <= n <= 100000,1 <= m <= n,1 <= k <= 1000000000,1 <= a[i] <= 1000000000。
输出描述:
输出满足条件的最少分段数。若无解则