题意
给出包含一个N个整数的数组A。找出一段长度至少为K的连续序列,最大化它的平均值。
请注意:一段子序列的平均值是子序列中所有数的和除以它的长度。
解决
最大化平均值,所以明显的是一道二分。。
但问题是如何判定。
我们可以这样想:
若判断一个序列是否平均值大于x
那么这个序列中每个数减去x后的和是大于0的。
所以我们可以二分一个x,再找一个最小的前缀和(且这个j必须小于等于i-k),若当前的前缀和减去最小的前缀和大于0那么这个x便是合法的。
所以便可以O(nlog max(a[i]))解决问题了。