加减【牛客tracker 每日一题】

发布时间:2026/10/19 2:10:03

加减【牛客tracker  每日一题】 加减时间限制1 秒空间限制256M题目描述小红拿到了一个长度为nnn的数组。她每次操作可以让某个数加111或者某个数减111。小红最多能进行kkk次操作。她希望操作结束后该数组出现次数最多的元素次数尽可能多。你能求出这个最大的次数吗输入描述第一行两个正整数nnn和kkk第二行有nnn个正整数aia_iai​1≤n≤1051 \le n \le 10^51≤n≤1051≤k≤10121 \le k \le 10^{12}1≤k≤10121≤ai≤1091 \le a_i \le 10^91≤ai​≤109输出描述不超过kkk次操作之后数组中可能出现最多次数元素的次数。示例 1输入5 3 6 3 20 8 1输出2说明共333次操作如下第一个数加一。第二个数加一。第四个数减一。数组变成了7 4 20 7 17\ 4\ 20\ 7\ 1742071共有222个相同的数777。可以证明222为最优解。另外此上操作并不是唯一的操作。数据范围与提示1≤n≤1051 \le n \le 10^51≤n≤1051≤k≤10121 \le k \le 10^{12}1≤k≤10121≤ai≤1091 \le a_i \le 10^91≤ai​≤109解题思路本题是排序 滑动窗口 中位数贪心的经典问题。给定一个长度为nnn的数组最多进行kkk次操作每次可以让某个数加 1 或减 1。目标是让操作后数组中某个元素出现的次数尽可能多求这个最大次数。1. 问题等价转化要让某个值出现的次数最多相当于从数组中选出一个连续子数组排序后通过加减操作将它们全部变成同一个数。为了使操作次数最少这个目标数应该选为该子数组的中位数因为中位数到所有点的距离之和最小。将数组升序排序后问题转化为在排序后的数组中找到一个最长的连续子数组使得将该子数组内所有元素变为其中位数所需的总操作次数不超过kkk。由于操作次数与子数组的长度和元素分布有关且对于固定右端点左端点越靠左操作次数越大满足单调性因此可以使用滑动窗口维护一个合法的区间。2. 算法实现滑动窗口 中位数维护代码使用双指针维护窗口[l,r][l, r][l,r]并实时计算将窗口内元素变为中位数所需的操作次数cur。排序将数组升序排序。初始化l 0cur 0res 0。遍历右端点r将窗口扩展到r新增元素a[r]。窗口的中位数位置为mid (l r) / 2。将a[r]变为中位数a[mid]的代价为a[r] - a[mid]累加到cur中。当cur k时需要收缩左端点移除左端点l的贡献。移除后窗口的中位数位置可能变为(l r 1) / 2。将a[l]变为新中位数的代价为a[新中位数] - a[l]从cur中减去。l。更新答案res max(res, r - l 1)。输出最终的res即为最大出现次数。3. 复杂度分析时间复杂度排序O(nlog⁡n)O(n \log n)O(nlogn)滑动窗口过程中每个元素最多被加入和移出窗口一次每次操作O(1)O(1)O(1)总O(n)O(n)O(n)。整体O(nlog⁡n)O(n \log n)O(nlogn)。n≤105n \le 10^5n≤105完全可行。空间复杂度需要存储数组O(n)O(n)O(n)。总结通过排序将问题转化为连续子数组的中位数调整问题利用滑动窗口在O(n)O(n)O(n)时间内找到最长合法子数组。中位数的选择保证了调整代价最小而窗口的单调性保证了双指针的正确性。该方法高效且易于实现是处理此类“通过加减操作使元素集中”问题的标准思路。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;ll n,k;vectorlla;voidsolve(){cinnk;a.resize(n);for(autox:a)cinx;sort(a.begin(),a.end());ll cur0;ll l0;ll res0;for(ll r0;rn;r){cura[r]-a[(rl)/2];while(curk){cur-a[(rl1)/2]-a[l];l;}resmax(res,r-l1);}coutres;}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);solve();return0;}
延伸阅读

更多相关文章

2026/10/19 2:05:03

别把善良喂给狼:建立个人边界,远离情感绑架与过度付出

老王前天晚上找我喝酒,第一句话就是“兄弟,别再把善良喂给狼了”。他没头没尾,但我知道他说的是什么。帮亲戚担保了一笔钱,亲戚跑了;替同事连续加班挡了一个月的锅,评优时对方连名字都没提;朋友…

2026/10/19 2:05:03

技术博文创作前的信息整理:标题、描述与关键词的关键作用

项目标题: 【无标题】 项目正文: 关键词: 摘要描述:我无法基于空的输入内容生成一篇有实质价值的博文。要写出真正贴合需求、有干货、能直接参考复现的内容,我至少需要以下任一信息:项目标题(哪怕一句话也行,比如“用树莓派搭一个…

2026/10/19 2:05:03

推荐系统特征工程全景:230+特征从设计到上线的实践总结

做推荐系统的同学应该都有体会:模型结构决定上限,但真正把上限托起来、把下限兜住的,往往是特征。一个推荐模型能不能在业务上持续产出增量,比拼的往往不是换了个什么结构、调了个什么Loss,而是特征系统的完整度和精细…

2026/10/19 3:20:06

五种经典排序算法详解:从原理到工程实践

排序算法这东西,科班出身的人大学里多少都学过,工作几年的老码农也不见得能徒手把每种细节都写对。前阵子我帮团队做一次代码评审,发现一个功能里明明只需要取前K个最大元素,结果有人直接写了个冒泡排序去排整个数组,数…

2026/10/19 3:20:06

Windows磁盘直读:ReadFile返回错误87的排查与对齐修复

排查这种问题,大多数情况下都不是函数签名写得不对,而是调用方对“磁盘设备”这个特殊对象的理解不够。ReadFile返回FALSE,GetLastError()等于87,对应的是ERROR_INVALID_PARAMETER,翻译过来就是“参数错误”。但这个“…

2026/10/19 3:20:06

SpringBoot+Vue学生成绩管理系统:从设计到实战的完整指南

做了这么多年的SpringBoot和Vue项目,学生成绩管理系统这个题目确实是我见过出镜率最高的一类。不管你是刚学完框架基础想找个完整项目练手,还是正在准备毕业设计、课程设计需要一套能跑、能讲、能答辩的系统,这个方向都特别合适。它业务上不复…

2026/10/19 3:20:06

Android AIDL 多客户端跨进程通信实战:从源码到二次开发

简介:这份源码资源围绕 Android AIDL 跨进程通信展开,面向需要实现「多个客户端调用同一服务端」的开发者,尤其适合已掌握基础 Activity 与 Service、想进一步理解 Binder 机制的中级学习者。包内共 92 个文件,以 class、java、xm…

2026/10/19 3:20:06

不选模型选路由:三层动态分流中枢,让大模型API成本直降40%

最近大模型评测榜一出来,群里直接炸锅了。AA智能指数10月榜单洗牌幅度确实大,闭源旗舰位置换了人,开源阵营也冒出了几个能打的选手,不少只用单模型的朋友开始焦虑,觉得是不是自己的技术栈一夜之间就过时了。但我看到这…

2026/10/19 3:15:06

JSON-RPC 2.0实战:Python实现、TCP/HTTP接入与避坑指南

简介:jsonRPC.rar是一份面向Java Web开发者的JSON-RPC入门案例资源包,集中演示了轻量级远程调用协议的基本原理与实现方式,解决分布式服务通信及前后端API交互场景中的实际搭建问题。资源共35个文件,包含25个jar依赖库&#xff08…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑