1 条题解
-
0
题解
思路
若要在第 秒造成至少 点伤害,最省的方式一定包含连续施法区间
其伤害依次为 。多个需求区间若相交,就必须合并成一个更长的连续施法区间;互不相交的区间之间可以把伤害重置为 。
长度为 的连续区间耗费
做法
按出现时刻从后向前扫描。维护当前合并段的左右端点 。对于怪物 ,令 :
- 若 ,它与当前段相交,令 ;
- 否则,结算当前段的三角数,并新建区间 。
扫描结束后再结算最后一段。
极小时间轴子任务可以逐秒维护“上一秒伤害”并枚举不施法、重置为 、增加为 三种动作。若所有需求区间互不相交,则直接把每个 的三角数相加。
正确性证明
任一怪物的最后 次连续递增伤害构成区间 ,因此任何合法方案都必须覆盖所有这些区间。
相交区间不能用一次伤害重置分开,否则共同覆盖部分之后无法在两个终点同时达到所需伤害;把它们合并为一个连续递增段恰能满足全部需求。互不相交的合并段之间重置伤害只会减少法力,因此各段独立取从 开始的递增序列最优。
算法准确求出所有需求区间的并集连通段,并对每段加入其最小三角数代价,故总和就是全局最小法力。
复杂度分析
每个测试用例时间复杂度为 ,空间复杂度为 (不计输入数组)。
- 1
信息
- ID
- 1123
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者