蓝桥杯 2024 省赛 A:成绩统计
题目描述
有 位同学,按照进教室的顺序依次得到编号 ,第 位同学的成绩为 。小蓝依次查看同学成绩:当他看完前 位同学的成绩时,可以在这 个人中任意挑出 名同学,计算他们成绩的方差。请问至少需要查看多少位同学,才有可能找到一组方差严格小于阈值 的 人集合。如果始终无法满足条件,输出 。
方差 的定义为
输入格式
- 第一行:三个整数 。
- 第二行:$n$ 个整数 。
输出格式
输出一个整数表示最少需要查看的同学数量;若无法找到满足条件的集合,输出 -1。
样例
CodeBlock Loading...
前三人只能选到 ,方差为约 ;观察到第四人后可以选 ,方差约 ,因此答案为 4。
思路
- 对答案二分枚举 ,表示“只看前 位同学”是否可行。
- 对前 个成绩复制并排序,方差最小的 人一定是排序后相邻的 个。
- 使用前缀和维护滑动窗口内的和与平方和,快速计算每组 个数的方差。
- 如果存在某组方差不超过阈值,则当前 可行,继续收缩右端;否则扩大搜索范围。
代码
CodeBlock Loading...