noip模拟 平均数【二分+归并排序】

该博客主要介绍了如何解决NOIP模拟题目的平均数问题。通过两种方法,一是结合实数二分、树状数组和排序,二是使用实数二分配合归并排序,来寻找第k小的平均值。第一种方法的时间复杂度可能导致TLE,而第二种方法通过优化常数,实现了更高效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

有一天,小A得到了一个长度为n的序列。
他把这个序列的所有连续子序列都列了出来, 并对每一个子序列
都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,
最后他报出了第k小的平均值。
你要做的就是模仿他的过程
这里写图片描述

思路

题解一:实数二分+树状数组+排序。

先分析一下题目,如果是暴利枚举的话肯定会TLE。所以我们只能考虑二分答案,我们二分到一个平均数,如何判断他是否可行呢?加上当前的平均数为x,那么我们对于每一个数都减去x,对于每一个位置求前缀和,然后将得到的前缀和排序。通过前缀和作差我们是可以得到一段区间的总和的,我们要求平均数<=x的子序列个数,那么在所有数减去x的情况下就是求有多少区间的和是<=esp(精度误差),那么我们将前缀和按照从大到小排序,当前位置之前有多少在数列中位置小于当前位置的数就是对答案的贡献,可以用树状数组来统计答案。
时间复杂度 Θkn(log2n

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值