news 2026/2/16 2:22:05

小美的数组操作【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小美的数组操作【牛客tracker 每日一题】

小美的数组操作

时间限制:1秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

小美拿到了一个数组,她每次可以进行如下操作:
选择两个元素,一个加1 11,另一个减1 11

小美希望若干次操作后,众数的出现次数尽可能多。你能帮她求出最小的操作次数吗?

众数定义:在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。 一组数据中的众数不止一个,如数据2 、 3 、 − 1 、 2 、 1 、 3 2、3、-1、2、1、3231213中,2 、 3 2、323都出现了两次,它们都是这组数据中的众数。

输入描述:

第一行为一个正整数n nn,代表数组的大小。
第二行输入n nn个正整数a i a_iai​,代表小美拿到的数组。
1 ≤ n ≤ 10 5 1≤n≤10^51n105
1 ≤ a i ≤ 10 9 1≤a_i≤10^91ai109

输出描述:

一个整数,代表最小的操作次数。

示例1

输入:

3 1 4 4

输出:

2

说明:

第一次操作:第一个数加1 11,第二个数减1 11
第二次操作:第一个数加1 11,第三个数减1 11
数组变成[ 3 , 3 , 3 ] [3,3,3][3,3,3],众数出现了3 33次。

示例2

输入:

3 1 5 5

输出:

0

说明:

众数出现了2 22次,由于无法再用操作使得众数出现的次数变得更多,所以无需操作。

解题思路

本题依托数组总和守恒的核心特性(每次操作一增一减不改变总和),明确众数能达到的最大次数为数组长度n nn(总和可均分时)或n − 1 n-1n1(总和不可均分时),先判断数组总和是否能被n nn整除,若可以则直接计算所有元素转为该平均值的总操作次数作为答案;若不可均分则无法让全部元素相同,进一步剔除数组中的最大值、最小值分别计算剩余n − 1 n-1n1个元素总和的均分候选值,结合余数核算两种目标取值的操作成本,最终取所有候选方案中的最小操作次数,高效适配n ≤ 10 5 n≤10⁵n105的数据规模,精准得到满足众数次数最大化的最小操作代价。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefpair<ll,ll>pii;constll p=1e9+7;constll N=1e6+10;intmain(){ll n;cin>>n;ll v[n];ll sum=0;ll m=0,M=0;for(ll i=0;i<n;i++){cin>>v[i];sum+=v[i];if(v[i]>v[M])M=i;if(v[i]<v[m])m=i;}function<ll(ll,ll)>cal=[&](ll p,ll idx){ll res=0;for(ll i=0;i<n;i++){if(i==idx)continue;if(v[i]>p)res+=v[i]-p;}returnres;};ll ans=0;if(sum%n==0)ans=cal(sum/n,-1);else{ll k=(sum-v[M])%(n-1);ans=cal((sum-v[M])/(n-1),M);ans=min(ans,cal((sum-v[M])/(n-1)+1,M)+n-1-k);k=(sum-v[m])%(n-1);ans=min(ans,cal((sum-v[m])/(n-1),m));ans=min(ans,cal((sum-v[m])/(n-1)+1,m)+n-1-k);}cout<<ans<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/15 14:53:27

工业设计神器Nano-Banana Studio:从草图到爆炸图全流程

工业设计神器Nano-Banana Studio&#xff1a;从草图到爆炸图全流程 在工业设计、服装工程与产品开发领域&#xff0c;一个长期存在的痛点是&#xff1a;如何快速将三维实物转化为结构清晰、便于制造与教学的二维视觉表达&#xff1f;传统流程依赖专业建模软件人工拆解反复渲染…

作者头像 李华
网站建设 2026/2/14 15:36:02

WuliArt Qwen-Image Turbo从零开始:个人开发者GPU部署Qwen文生图全记录

WuliArt Qwen-Image Turbo从零开始&#xff1a;个人开发者GPU部署Qwen文生图全记录 1. 这不是又一个“跑通就行”的教程&#xff0c;而是真能每天用的文生图系统 你有没有试过在自己的RTX 4090上部署一个文生图模型&#xff0c;结果卡在显存爆满、黑图频出、生成要等两分钟&a…

作者头像 李华
网站建设 2026/2/15 11:57:43

从零开始:非专业人士如何用SNAP完成Sentinel影像镶嵌的实战指南

从零开始&#xff1a;非专业人士如何用SNAP完成Sentinel影像镶嵌的实战指南 第一次打开SNAP软件时&#xff0c;面对满屏的专业术语和复杂菜单&#xff0c;我和许多初学者一样感到手足无措。当时急需处理两幅Sentinel-2影像用于项目分析&#xff0c;却连最基本的镶嵌操作都频频…

作者头像 李华
网站建设 2026/2/14 22:55:02

Qwen3-ASR-1.7B入门必看:如何将Qwen3-ASR-1.7B集成至LangChain生态

Qwen3-ASR-1.7B入门必看&#xff1a;如何将Qwen3-ASR-1.7B集成至LangChain生态 1. 工具概述 Qwen3-ASR-1.7B是基于阿里云通义千问团队开源的中量级语音识别模型开发的本地智能语音转文字工具。相比之前的0.6B版本&#xff0c;1.7B模型在复杂长难句和中英文混合语音的识别准确…

作者头像 李华
网站建设 2026/2/15 14:33:33

中文招聘JD增强:MT5 Zero-Shot镜像在岗位描述多风格生成中的实践

中文招聘JD增强&#xff1a;MT5 Zero-Shot镜像在岗位描述多风格生成中的实践 1. 为什么招聘JD需要“变着花样说”&#xff1f; 你有没有遇到过这些情况&#xff1f; HR刚写完一份招聘JD&#xff0c;发到公司群让业务部门确认&#xff0c;结果被反馈&#xff1a;“太模板化了&…

作者头像 李华