news 2026/4/20 5:04:15

OJ练习之加减(中等偏难)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OJ练习之加减(中等偏难)

加减

题号:NC224938
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红拿到了一个长度为 n 的数组。她每次操作可以让某个数加 1 或者某个数减 1 。
小红最多能进行 k 次操作。她希望操作结束后,该数组出现次数最多的元素次数尽可能多。
你能求出这个最大的次数吗?

输入描述:

第一行两个正整数 n 和 k 第二行有 n 个正整数 ai 1≤n≤10^5 1≤k≤10^12 1≤ai≤10^9

输出描述:

不超过 k 次操作之后,数组中可能出现最多次数元素的次数。

示例1

输入

5 3 6 3 20 8 1

输出

2

说明

共 3 次操作如下: 第一个数加一。 第二个数加一。 第四个数减一。 数组变成了 7 4 20 7 1 ,共有 2 个相同的数: 7 。 可以证明, 2 为最优解。另外,此上操作并不是唯一的操作。

题解(前缀和+滑动窗口+贪心):

#include<iostream>#include<algorithm>usingnamespacestd;// k已经超出了int的范围,ai涉及到加减操作,很容易超出int范围,所以直接使用long longtypedeflonglongLL;constintN=1e5+10;LL n,k;LL arr[N];LL sum[N];LLcal(intleft,intright){// 选取区间内中间下标,对于区间内偶数个来说,选中间两个的任意一个结果都一样intmid=(left+right)/2;// 区间内:mid左边的个数×a[mid]-mid左边的和+mid右边和和 - mid右边的个数×a[mid]return(mid-left)*arr[mid]-(sum[mid-1]-sum[left-1])+(sum[right]-sum[mid])-(right-mid)*arr[mid];// 根据规律,总结出的公示可以直接O(1)出结果}intmain(){cin>>n>>k;// 将n个数存入,从下标1开始存入for(inti=1;i<=n;i++)cin>>arr[i];// 将n个数按照从小到大排序sort(arr+1,arr+1+n);// 将前i个数的和按照对应下标存入sum数组里备用for(inti=1;i<=n;i++)sum[i]=sum[i-1]+arr[i];intleft=1,right=1;intret=1;// 根据题意,ret最小也是1while(right<=n){// cal用来获取将区间所有数都变成同一个数的最小加减次数,即最小代价LL cost=cal(left,right);while(cost>k)// 如果最小代价比规定的都大,继续寻找更小的可能{left++;// 再扩大区间代价还会增大,要让left右移cost=cal(left,right);}// 更新retret=max(ret,right-left+1);// 当然选择满足的区间差值最大的right++;// 继续尝试寻找更优解}cout<<ret<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 4:50:21

数据科学中的Pandas数据框扩展

在数据科学和机器学习的领域中,处理数据结构往往是日常工作的一部分。尤其是当我们需要处理图结构数据时,构建和操作邻接矩阵是常见任务之一。Pandas作为Python中处理数据的强大工具,提供了许多便捷的方法来操作数据框(DataFrame)。本文将探讨如何使用Pandas高效地扩展数据…

作者头像 李华
网站建设 2026/4/20 4:39:27

C++ MapViewOfFile 内存映射实战:解锁Windows大文件高效处理

1. 为什么需要内存映射技术&#xff1f; 如果你曾经尝试用传统方式读取几个GB的大文件&#xff0c;可能会遇到性能瓶颈。我做过一个实验&#xff1a;用fread逐块读取1GB的日志文件&#xff0c;耗时超过3秒&#xff1b;而改用内存映射方式&#xff0c;同样的文件仅需不到0.5秒。…

作者头像 李华
网站建设 2026/4/20 4:35:19

告别SAP依赖:用Revenna RAV2SAP工具让Dante控制器发现任意AES67音频流

告别SAP依赖&#xff1a;用Revenna RAV2SAP工具让Dante控制器发现任意AES67音频流 在专业音频系统的IP化进程中&#xff0c;AES67和Dante作为两大主流标准&#xff0c;常常需要在同一网络中协同工作。然而&#xff0c;当视频会议终端或传统广播设备输出的AES67流缺少SAP&#x…

作者头像 李华