首页 > 小美的数组操作
头像 张谦蛋
发表于 2023-08-30 14:15:06
链接:https://ac.nowcoder.com/acm/contest/63869/D 来源:牛客网 考虑以下几点: 1.众数个数最多是多少? sum%n==0?n个:n-1个 题目要求优先求众数个数最多的情况,然后再求其最小的操作数。分以下两种情况考虑, 当sum%n==0时,也就是全部 展开全文
头像 怎么不AC啊
发表于 2026-02-03 11:08:19
简单考虑一下,众数最多要么就全是同一个数有个,做不到则可以个1以及一个. 前者是简单的,考虑sum%n==0即可直接判断,并计算即可。 我们来考虑第二种情况,在这种情况下,最终结果将会是个和一个. 记为sum。那么满足 此时我们不知道哪个值会成为,不妨记为,那么最终操作次数就是各个值到最终值距离的 展开全文
头像 彭旭锐
发表于 2023-08-28 16:31:57
问题分析 关键信息: 根据题目要求,我们需要以最少操作次数构造出最多数量的众数。其中「最多数量的众数」是优先的,即优先让数量更多,再考虑最少操作次数; 平均值: 题目操作可以分别对两个数加一和减一,最优情况下数组元素和能够被 n 整除时,能够构造最大众数。 局部平均: 如果无法构造完全平均,当选择 展开全文
头像 pandaC222
发表于 2026-02-03 12:10:15
这题分两种情况,一是可以整出众数为n,不能整除众数为n-1,需要计算最小次数需要注意,讨论n-1的情况时,根据贪心思想删去最小或最大值,但是要求最优解要考虑减去后的sum/(n-1)的ceil和floor注意:ceil 时,剩余总和不足,需要补差值,这个差值就是额外操作次数;floor 时,总和已经 展开全文
头像 为芙宁娜献出心脏
发表于 2026-02-03 17:58:56
首先要先明确的一点就是,如果所有数字的总和sum能被n整除,那么最大众数数量为n,否则是n-1。 因为不能整除的时候,最大众数数量肯定不能为n,这个时候我们可以想到让某一个区间的总和能够被该区间长度整除,而其他数字就不用管了 所以我们可以将一些数清到不用管的数字里,那么很明显,我们可以只清到某一个数 展开全文
头像 carson_flute
发表于 2026-02-03 21:18:31
题目描述 小美拿到了一个数组,她每次可以进行如下操作:选择两个元素,一个加 1,另一个减 1。小美希望若干次操作后,众数的出现次数尽可能多。你能帮她求出最小的操作次数吗? 众数定义:在一组数据中,出现次数最多的数据(可能有多个)。 本题是考察贪心与数学分析的题,难度中等。 核心思路 核心观察 展开全文
头像 此在Dasein
发表于 2026-02-03 07:23:28
1. 问题建模 1.1 问题本质 该问题包含两个层级的优化目标,需按优先级依次满足: 第一优先级:最大化众数的出现次数 。 第二优先级:在满足最大 的前提下,最小化操作次数。 1.2 操作的不变量(Invariant) 题目中定义的操作是“一个数加 1,另一个数减 1”。这是一个经典的零和博弈 展开全文
头像 起床了的小黄鸭很迷茫
发表于 2024-03-07 11:29:22
思路 众数个数为n或者n-1 当数组平均值k为整数,众数个数为n个,众数为k; 否则众数个数为n-1个,对数组排序,众数可以是前n-1个数的均值向下取整k和k+1,后n-1个数的均值向下取整k和k+1,求出操作次数最小的。 代码 package main /* 众数个数为n或者n-1 展开全文
头像 YunBaichuan
发表于 2026-02-03 11:20:45
参考:https://blog.nowcoder.net/n/9a329387829c45cab18f6e0e409afec0 思路:思维题。base case比较容易想到:1.操作必须同时+1和-1,所以说整个数组和不变;2.要求最大化众数的个数,由于可以进行任意次操作,所以说令,那么当时,我们可 展开全文
头像 ATRI_execution
发表于 2026-02-03 17:01:46
def solve(): import sys import math import bisect input = sys.stdin.read data = input().split() n = int(data[0]) a = list 展开全文

等你来战

查看全部