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

中位数定理:小试牛刀> _ <2025牛客寒假1

给定数轴上的n个点,找出一个到它们的距离之和尽量小的点(即使我们可以选择不是这些点里的点,我们还是选择中位数的那个点最优)
结论:这些点的中位数就是目标点。可以自己枚举推导(很好想)
(对于 点的数量为奇数,是排序之后最中间的数 ,对于点的数量为偶数的情况下,中间两个点 都可以,他俩的答案是相同的,可以简单的画图证明,或者直接抽象一点的想:假设这两个点分别为A B他们之间的距离为d,A相对于B 来说,左侧的点都减少d ,右侧的点都增加d .又因为A左侧的点的个数等于B 右侧的点,所以A B 的值相同)

板子题

void solve()
{int n;cin>>n;vector<int>a(n);for (int i=0;i<n;i++){cin>>a[i];}sort(a.begin(),a.end());int ans=0;for (int i =0;i<n;i++){ans+=abs(a[i]-a[n>>1]);}cout<<ans<<"\n";
}

添加链接描述
在这里插入图片描述
根据上边的引入,可以想到 将数组从中间分成两个子数组。
在考虑一种特殊的情况,就是我两个子数组的中位数相同,这样就不符合题目的要求。
这个时候,两个子数组的中位数肯定有一个要变一下。
有两种可能 左边的中位数-1 / 右边的中位数加1
(为啥左边的中位数不能+1 呢,因为加1 减1 对于数值是原本的中位数的数字 距离是相同的,但是我前边的数大概率有小于我原本中位数的数值,所以我中位数-1 ,距离小的数更进了)

#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
#define int long longvoid solve()
{int n;cin >> n;vector<int> a(n);for (int i = 0; i < n; i++){cin >> a[i];}sort(a.begin(), a.end());if (n == 2){if (a[0] != a[1]){cout << "0\n";}elsecout << '1' << "\n";return;}int len = n;len /= 2;int pos1 = len / 2;int pos2 = len + len / 2;int ans=0;if (a[pos1] != a[pos2]){//[0 len-1]for (int i=0;i<len;i++){ans+=abs(a[i]-a[pos1]);}for (int i=len;i<n;i++){ans+=abs(a[i]-a[pos2]);}}else{int tar=a[pos2]+1;for (int i=0;i<len;i++){ans+=abs(a[i]-a[pos1]);}for(int i=len;i<n;i++){ans+=abs(a[i]-tar);}int t=0;tar=a[pos1]-1;for (int i=0;i<len;i++){t+=abs(a[i]-tar);}for (int i=len;i<n;i++){t+=abs(a[i]-a[pos2]);}ans=min(ans,t);}cout<<ans<<'\n';
}
signed main()
{std::cin.tie(nullptr)->sync_with_stdio(false);int t = 1;cin >> t;while (t--){solve();}return 0;
}
http://www.lryc.cn/news/532202.html

相关文章:

  • (2025,LLM,下一 token 预测,扩散微调,L2D,推理增强,可扩展计算)从大语言模型到扩散微调
  • 如何开发一个大语言模型,开发流程及需要的专业知识
  • 【数据采集】基于Selenium采集豆瓣电影Top250的详细数据
  • neo4j-在Linux中安装neo4j
  • 多无人机--强化学习
  • UE制作2d游戏
  • 说一下JVM管理的常见参数
  • 【FPGA】 MIPS 12条整数指令【2】
  • 机器学习--python基础库之Matplotlib (2) 简单易懂!!!
  • mybatis plus 持久化使用技巧及场景
  • JVM监控和管理工具
  • 记录 | 基于MaxKB的文字生成视频
  • 生成式AI安全最佳实践 - 抵御OWASP Top 10攻击 (下)
  • 现场流不稳定,EasyCVR视频融合平台如何解决RTSP拉流不能播放的问题?
  • 文献阅读 250205-Global patterns and drivers of tropical aboveground carbon changes
  • 算法与数据结构(括号匹配问题)
  • 订单状态监控实战:基于 SQL 的状态机分析与异常检测
  • C# 中记录(Record)详解
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-autobackend.py
  • Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)
  • Rust 变量特性:不可变、和常量的区别、 Shadowing
  • NFT Insider #167:Champions Tactics 角色加入 The Sandbox;AI 助力 Ronin 游戏生态
  • 鹧鸪云无人机光伏运维解决方案
  • NeuralCF 模型:神经网络协同过滤模型
  • 【前端】【Ts】【知识点总结】TypeScript知识总结
  • JAVA架构师进阶之路
  • 掌握@PostConstruct与@PreDestroy,优化Spring Bean的初始化和销毁
  • Java设计模式:行为型模式→状态模式
  • 景联文科技:专业数据采集标注公司 ,助力企业提升算法精度!
  • ES面试题