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

题解:学而思编程 均富卡

【题目来源】

学而思编程:均富卡

【题目描述】

有一个数列 \(a_1,a_2,⋯ ,a_n\)。可以对它进行如下操作:

每次操作,选择数列的一个子序列(也可以是数列本身),将子序列中的数都改成它们的平均数。

例如数列 \([5,1,2,1]\),选择第 \(1\) 个数和第 \(3\) 个数,它们的平均数是 \(3.5\),所以操作后数列就会变成 \([3.5,1,3.5,1]\)

给出数列 \(a_1,a_2,⋯ ,a_n\) 和一个整数 \(x\),我们想要通过若干次操作,让尽可能多的数大于等于 \(x\)。问最多可以使多少个数大于等于 \(x\)?(操作的次数没有上限,也可以一次都不操作)

【输入】

输入包含多组数据。

\(1\) 行,\(1\) 个正整数 \(T\),表示有 \(T\) 组数据。

每组数据由两行组成:

\(1\) 行,包含两个整数 \(n,x\)

\(2\) 行,包含 \(n\) 个整数 \(a_1,a_2,⋯ ,a_n\)

【输出】

输出 \(T\) 行,对每组数据输出答案。

【输入样例】

4
4 3
5 1 2 1
4 10
11 9 11 9
2 5
4 3
3 7
9 4 9

【输出样例】

2
4
0
3

【核心思想】

  1. 问题分析:给定 \(n\) 个数的数列 \(a_1, a_2, \ldots, a_n\) 和目标值 \(x\),每次操作可以选择一个子序列,将其所有数改为它们的平均数。求最多能使多少个数 \(\geq x\)。这是一个排序 + 前缀和贪心问题,关键在于降序排序后,优先选择较大的数可以使平均值最大化。

  2. 算法选择

    • 降序排序策略:将数组从大到小排序,优先选择较大的元素
    • 前缀和贪心判定:依次累加前 \(i\) 个元素,检查平均值是否 \(\geq x\)
    • 贪心正确性:降序排序后,前 \(i\) 个元素是能使平均值最大的选择。如果前 \(i\) 个不满足,则任何包含 \(i\) 个元素的选择都不满足
  3. 关键步骤

    • 读取输入\(T\)(测试组数),每组 \(n, x\) 和数组 \(a[1..n]\)
    • 降序排序sort(a + 1, a + n + 1, greater<int>())
    • 前缀和贪心判定(遍历 \(i\)\(1\)\(n\)):
      • 累加前缀和tot += a[i]
      • 平均值判定:检查 tot / i >= x
      • 满足条件:继续下一个
      • 不满足条件:输出 \(i-1\)(前 \(i-1\) 个是最大满足个数)
    • 全部满足:如果遍历完都满足,输出 \(n\)
  4. 时间/空间复杂度

    • 时间复杂度:\(O(T \times n \log n)\),主要是排序复杂度,\(T\) 为测试组数
    • 空间复杂度:\(O(n)\),存储数组
  5. 排序前缀和贪心的核心思想

    • 降序排序:优先选择较大的元素,使前 \(i\) 个元素的平均值最大化
    • 前缀和累加:通过前缀和快速计算前 \(i\) 个元素的总和
    • 贪心判定:一旦前 \(i\) 个元素的平均值 \(< x\),说明继续加入更小的元素只会拉低平均值,因此前 \(i-1\) 个就是最优解
    • 单调性利用:降序排序后,平均值具有单调递减的性质,可以用一次遍历找到临界点
    • 适用于最大平均值、最优子集选择、阈值判定类问题

【算法标签】

贪心

【代码详解】

#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
int t, n, x, a[100005];signed main()
{cin >> t;while (t--){cin >> n >> x;for (int i = 1; i <= n; i++){cin >> a[i];}sort(a + 1, a + n + 1, greater<int>());  // 从大到小排序int tot = 0, flag = 1;  // tot: 前缀和, flag: 标记是否所有元素都满足条件for (int i = 1; i <= n; i++){tot += a[i];// 检查前i个元素的平均值是否>=xif (tot / i >= x){continue;}else{cout << i - 1 << endl;  // 输出满足条件的最大个数flag = 0;break;}}if (flag){cout << n << endl;  // 所有元素都满足条件}}return 0;
}

【运行结果】

4
4 3
5 1 2 1
2
4 10
11 9 11 9
4
2 5
4 3
0
3 7
9 4 9
3
http://www.jsqmd.com/news/1011379/

相关文章:

  • 2026 苏州奢侈品回收口碑排名盘点:7 大品牌深度测评,选出最佳门店 - 奢侈品回收
  • 天地图、OpenStreetMap、ArcGIS Online,Web地图瓦片服务(WMTS/TMS/XYZ)到底怎么选?一个前端开发者的实战踩坑笔记
  • 2026鸡西厂区电能质量测试评估放心机构 TOP + 实地测评 + 详细地址电话 - 中检检测集团
  • 2026昌吉地区本地人常去的 5 家土壤检测农田污染场地检测第三方机构实体店实地测评汇总 - 科信检测
  • Pandas数据清洗实战:构建生产级鲁棒性清洗管道
  • 2026汉中市帝舵+浪琴手表专业回收,26年精选回收店铺排行榜推荐 - 奢金汇
  • 2026湖州厂区电能质量测试评估放心机构 TOP + 实地测评 + 详细地址电话 - 中检检测集团
  • 5分钟掌握猫抓Cat-Catch:浏览器资源嗅探神器的完整使用指南
  • 从/dev/fb0到DRM:一个嵌入式工程师的Linux显示框架踩坑与选型指南
  • 题解:AtCoder AT_awc0027_e Selection of Contiguous Intervals
  • Display Driver Uninstaller 终极使用指南:彻底清理显卡驱动冲突的完整解决方案
  • 2026连云港市圣罗兰+赛琳+巴黎世家包包专业回收,2026甄选回收店铺排行榜推荐 - 奢金汇
  • 为什么说买二手3C,垂直类平台比综合类平台更适合? - 速递信息
  • Mythos门控模型:长程因果推理与能力即服务新范式
  • Agent Lightning:运行时注入式智能体自适应学习引擎
  • 天花板!2026 实验室装修公司推荐 5大企业实力透视+ 全场景选型秘籍 - 速递信息
  • 2026焦作厂区电能质量测试评估放心机构 TOP + 实地测评 + 详细地址电话 - 中检检测集团
  • 7B模型如何在金融合规场景超越GPT-4:指令微调+RLHF实战指南
  • 想出海?先看看阿里云、AWS、GCP在东南亚和欧洲的“水土服不服”
  • TC618CS 单通道直流马达驱动器
  • 2026源头厂家甄选:铝材走心机精密铝棒与铝合金管材供应企业深度分析 - 品牌发掘
  • 国产替代新选择:实测博海深衡三维成像声纳,在水下安防和工程检测里到底怎么用?
  • 题解:学而思编程 奶牛杂技团
  • N皇后遗传算法实战:Python工程化实现与调参精髓
  • 2026南京市百达翡丽+宝珀手表专业回收,26年精选回收店铺排行榜推荐 - 奢金汇
  • 题解:AtCoder AT_awc0082_b Maximizing the Partition Score of a Lamp Sequence
  • 2026南宁本地水质检测饮用水检测哪家强?TOP 正规机构榜单 + 联系方式 - 中安检测集团
  • PyTorch张量形状错误根因与实战调试指南
  • 2026吉林本地水质检测饮用水检测哪家强?TOP 正规机构榜单 + 联系方式 - 中安检测集团
  • 2026揭阳本地水质检测饮用水检测哪家强?TOP 正规机构榜单 + 联系方式 - 中安检测集团