当前位置: 首页 > news >正文

NOIP2023模拟2联测23 集训

题目大意

给定 n n n个数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,,an,你需要找到一个集合 S S S,使得 S S S严格大于 S S S的平均数的数字个数尽量多,输出最多的个数。

注意:这里的集合是可重集,数字可以重复。

1 ≤ n ≤ 1 0 6 , 1 ≤ a i ≤ 1 0 9 1\leq n\leq 10^6,1\leq a_i\leq 10^9 1n106,1ai109


题解

首先,我们将 a a a从小到大排序。

枚举第一个严格大于 S S S的平均数的数 i i i。因为比平均数小的数肯定越多越好,所以我们可以取 1 1 1 i − 1 i-1 i1之间的所有数。

为了让平均数尽量小,在选择严格大于 S S S的平均数的数的时候肯定要选尽量小的数。也就是说,严格大于 S S S的平均数的数是 a i a_i ai a i a_i ai之后的连续的一段数,设这段数是 a i a_i ai a p a_p ap,那也就是说我们要选择的数是 a 1 a_1 a1 a p a_p ap,这里的 p p p需要满足 s u m p p < a i \dfrac{sum_p}{p}<a_i psump<ai(其中 s u m p p \dfrac{sum_p}{p} psump指这 p p p个数的平均数),也就是 s u m p < a i × p sum_p<a_i\times p sump<ai×p。为了使严格大于 S S S的平均数的数更多,我们需要求满足条件的最大的 p p p

我们发现,满足条件的最大的 p p p是随 i i i的增大而增大(或者不变)的,那么我们可以用一个指针来求 p p p。对于每个 i i i和其对应的 p p p,严格大于 S S S的平均数的数的数量为 p − i + 1 p-i+1 pi+1,用 p − i + 1 p-i+1 pi+1来更新答案即可。

时间复杂度为 O ( n log ⁡ n ) O(n\log n) O(nlogn)

code

#include<bits/stdc++.h>
using namespace std;
const int N=1000000;
int n,p=1,ans=0,a[N+5];
long long sum[N+5];
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}sort(a+1,a+n+1);for(int i=1;i<=n;i++){sum[i]=sum[i-1]+a[i];}for(int i=1;i<=n;i++){while(p+1<=n&&sum[p+1]<1ll*(p+1)*a[i]) ++p;ans=max(ans,p-i+1);}printf("%d",ans);return 0;
}
http://www.lryc.cn/news/206478.html

相关文章:

  • 【设计模式】第3节:设计模式概论
  • 风力发电功率预测(CEEMDAN-LSTM-CNN-CBAM模型,Python代码)
  • 精通代码复用:设计原则与最佳实践
  • 【static + 代码块+toString打印对象】
  • 【vue3 】 创建项目vscode 提示无法找到模块
  • 盘点算法比赛中常见的AutoEDA工具库
  • ICLR 2023丨3DSQA:3D 场景中的情景问答
  • ChatGPT的前世今生:从概念到现实的AI之旅
  • MINA架构DEMO
  • Linux基础:2:shell外壳+文件权限
  • webpack 解决:TypeError: merge is not a function 的问题
  • datahub 中血缘图的实现分析,在react中使用airbnb的visx可视化库来画有向无环图
  • 二、判断语句
  • 龙智汽车行业客户案例:Jira数据中心版助客户解锁高效项目管理
  • 03 vi编辑器
  • Web界面自动化操作工具 - Selenium常见用法
  • Openssl数据安全传输平台009:加密理论基础:哈希/非对称加密RSA/对称加密AES
  • iPhone开发--Xcode15下载iOS 17.0.1 Simulator Runtime失败解决方案
  • Galaxy生信云平台|Maftools高效地汇总、分析、注释和可视化肿瘤基因突变MAF文件...
  • JS三种常见的存储机制
  • 【Python机器学习】零基础掌握BaggingClassifier集成学习
  • [晕事]今天做了件晕事26;gcc对strcmp/strncmp的优化
  • 【深度学习】使用Pytorch实现的用于时间序列预测的各种深度学习模型类
  • ts | js | 爬虫小公举分享
  • 实现el-table打印功能,样式对齐,去除滚动条
  • 2022年09月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 【面试经典150 | 链表】两数相加
  • vue路径中“@/“代表什么
  • java springboot2.7 写一个本地 pdf 预览的接口
  • RustDay06------Exercise[81-90]