对于这种答案需要求 最大/最小值 的问题,如果不知道怎么下手,并且题目是有区间性质的时候,可以尝试使用二分答案。
可以发现对于当前技能,要让当前技能的等级最快的达到最高,一定是当前技能训练一次,然后找其他技能(等级最低的那个)训练一次,重复这个操作即可。
小蓝有 n 个技能,第 i 个技能的初始等级为 ai。每次训练,她可以选择一个技能将其等级提升 1,但连续两次训练不能选择同一个技能。现在她想依次考虑每个技能:如果要让第 i 个技能成为等级最高的技能(允许并列最高),在满足训练规则的前提下,所有技能等级总和的最小值是多少?如果无法实现,则输出 −1。
技能数量 n 不超过 105,每个初始等级 ai 为不超过 109 的正整数。
第一行包含一个正整数 n,表示技能的数量。 第二行包含 n 个正整数,第 i 个数表示技能 i 的初始等级 ai。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.