官方题解
2025-09-08 11:25:14
发布于:浙江
29阅读
0回复
0点赞
题目大意
一共有 个关卡,每个关卡分为解密和战斗两部分,挑战关卡有两个限制:
-
对于不同关卡,只有完成了前一关的解密部分才能进行下一关的解密部分;
-
对于同一关卡,只有完成了这一关卡的解密部分才能进行这一关的战斗部分。
第 关的解密部分需要耗时 ,战斗部分需要耗时 ,完成了一关的揭秘和战斗部分才视为完成这一关。对于 个询问,求完成 个关卡的最短用时。
解题思路
首先考虑完成 个关卡,我们需要至少完成前 个解密部分 ,完成 之前我们需要至少完成前 个解密部分。
接下来我们需要考虑的是选择完成哪几个关卡所花的时间最少。由于询问次数只有 ,所以对于每一个询问可以尝试使用 甚至 的复杂度去完成。由于完成解密部分一定是连续的,所以我们可以先用前缀和 求出前 个解密部分所花时间是多少。
我们可以枚举最后一个被完成的关卡的哪个,此时的时间花费是 ,其余的 个战斗部分选择 最小的 个,但是这样的做法时间复杂度会来到 ,显然是不合理的。其实我们可以通过优先队列优化选 的过程,我们先选出前 关卡完成,将 都存入优先队列中,往后枚举时,设当前枚举的位置为 ,如果 小于优先队列中最大的元素,则可以把 与优先队列中最大元素替换。每次算出所需要的时间,更新答案。这样查询的时间复杂度为 。
总时间复杂度为 。
这里空空如也
有帮助,赞一个