现在n个魔法师(2<=n<=100000),这n个魔法师都有自己的魔法值ai(1<=ai<=1000000000),他们为了证明自己是最强的魔法师便开始了争夺战,任意一个魔法师都可以对其他的魔法师发起攻击,每次攻击,被攻击的魔法师损失掉的魔法值是攻击者当前的魔法值,当魔法值小于等于 0 的时候淘汰出局,问最后只剩下一名魔法师时,他的魔法值最少是多少。输入魔法师数 n,和 n 个数,表示每个魔法师的初始魔法值 输出一个数,在任意的对决中,最后只剩下来一名魔法师的最小的魔法值。
根据题意,可知魔法师在攻击别的魔法师时,自身不会消耗魔法值,只有被攻击时,魔法值才会有损失,损失的魔法值等于攻击者的魔法值。本题要求的就是,任意攻击的情况下,剩下最后一名魔法师的最小魔法值,可以这样解决。先给各个魔法师按照魔法值从大到小排序,设置min的初始值为当前最小的魔法值,用这个最小的魔法值攻击其他魔法师,直到有其他魔法师的魔法值小于 min,这时 min 的值更新为此时的最小魔法值。然后继续前述攻击方法,直到 min 为 1(最小魔法值不会小于 1),或者只剩下最后一名魔法师,此时剩下的魔法师的魔法值即为最小魔法值。 因此输入:4 [2,8,6,20] 输出:2
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。