方法:二分答案
合理性:假设K天能恰好能解决问题,那么K+1必然也行(可以把k+1天增长的那个用魔法减去),所以K天之后都是可以的。
现在二分答案:假设第K天可以,那么可以在O(N)的复杂度从a数组里得到不使用魔法的b数组。(例如 3 3 5 经过 2 天 变成 4 4 5)
然后现在考虑使用魔法,把b数组中每个值都变成了x,所需的魔法次数为|b1 - x| + |b2 - x| + ... + |bn - x|,考虑到贪心,只要上述公式的最小值小于等于K次魔法就可以,所以第K天是否成立的依据是 |b1 - x| + |b2 - x| + ... + |bn - x| 的最小值(x为数轴上任意一点) <= K。
x取b数组中位数时取到最小值。