题目描述
给一个长度为 nn 的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度 \ge m≥m。
输入格式
第一行两个整数 nn 和 mm。
接下来 nn 行,每行一个整数 a_iai,表示序列第 ii 个数字。
输出格式
一个整数,表示最大平均数的 10001000 倍,如果末尾有小数,直接舍去,不要用四舍五入求整。
输入输出样例
输入 #1复制
10 6 6 4 2 10 3 8 5 9 4 1
输出 #1复制
6500
说明/提示
数据规模与约定
- 对于 60\%60% 的数据,保证 m\le n\le 10^4m≤n≤104;
- 对于 100\%100% 的数据,保证 1 \leq m\le n\le 10^51≤m≤n≤105,0\le a_i\le20000≤ai≤2000。
二分答案自然是平均数一类问题的常用思路。不过这题还有O(n)的算法(参见2004年集训队论文,周源)
大体思路是先求部分和S(x),然后连续子序列平均值就转化为S-x平面上的斜率:ave(x,y)=(