开发者社区> 问答> 正文

遇到一个求魔法值问题,求解答

现在n个魔法师(2<=n<=100000),这n个魔法师都有自己的魔法值ai(1<=ai<=1000000000),他们为了证明自己是最强的魔法师便开始了争夺战,任意一个魔法师都可以对其他的魔法师发起攻击,每次攻击,被攻击的魔法师损失掉的魔法值是攻击者当前的魔法值,当魔法值小于等于 0 的时候淘汰出局,问最后只剩下一名魔法师时,他的魔法值最少是多少。输入魔法师数 n,和 n 个数,表示每个魔法师的初始魔法值 输出一个数,在任意的对决中,最后只剩下来一名魔法师的最小的魔法值。

展开
收起
游客4skzfvnrxrzbi 2021-12-23 17:06:04 377 0
1 条回答
写回答
取消 提交回答
  • 根据题意,可知魔法师在攻击别的魔法师时,自身不会消耗魔法值,只有被攻击时,魔法值才会有损失,损失的魔法值等于攻击者的魔法值。本题要求的就是,任意攻击的情况下,剩下最后一名魔法师的最小魔法值,可以这样解决。先给各个魔法师按照魔法值从大到小排序,设置min的初始值为当前最小的魔法值,用这个最小的魔法值攻击其他魔法师,直到有其他魔法师的魔法值小于 min,这时 min 的值更新为此时的最小魔法值。然后继续前述攻击方法,直到 min 为 1(最小魔法值不会小于 1),或者只剩下最后一名魔法师,此时剩下的魔法师的魔法值即为最小魔法值。 因此输入:4 [2,8,6,20] 输出:2

    2021-12-23 18:53:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载