Content

某个人去参加比赛,\(n\) 个评委分别给他打分 \(a_1,a_2,\dots,a_n\)。这个人可以最多执行 \(m\) 次操作,每次操作将一个评委的分数加 \(1\)。定义他的最终分数为去掉一个最高分和一个最低分后的剩余得分的总和。求可能最高的最终分数。

数据范围:\(3\leqslant n\leqslant 10^5\),\(0\leqslant m,a_i\leqslant 10^9\)。

Solution

本题解我们来分 Subtask 来讲解。

Subtask 1 (5 pts):\(m=0\)

这一个部分分其实是很好拿的。我们只需要将所有评委的分数排个序,然后统计一下第 \(2\sim n-1\) 个人的分数和即可。

Subtask 2 (10 pts):\(n=3\)

这个 Subtask 对于启发正解很有作用。

我们不妨先花费若干次操作,把第 \(2\) 高的分数和最高的分数齐平。当然在这里如果就把操作数给用完了,那么就直接可以统计结果了。

如果第 \(2\) 高的分数和最高的分数齐平了的时候,操作数还没有用完,我们就把剩余的操作数平均分成两份(如果多出了一份先丢在一边)。然后我们把这两份分别分给第 \(2\) 高的分数和最高的分数。多出的一份无论分给谁都不会影响最终的结果,因此就可以直接输出第 \(2\) 高的分数了。

Subtask 3 (15 pts):\(n,m\leqslant 10^3\)

这个 Subtask 你随便怎么暴力模拟应该都可以过,因此不做赘述。

Subtask 4 (70 pts):正解

我们回到 Subtask 2,受到其中均分的启发,我们不妨先让第 \(2\sim n-1\) 高的分数和最高的分数齐平。当然在这里如果就把操作数给用完了,那么就直接可以统计结果了。

如果全部齐平了还没用完操作,我们就把剩余的操作数平均分成 \(n-1\) 份(多出的分不出来的操作数先丢在一边,留做备用)。然后先把这 \(n-1\) 份平均分给第 \(1\sim n-1\) 高的分数,然后再去看是否多出的操作数。如果有多出的操作数,我们将一个操作数分给最高的分数,再将剩余的操作数随便分给第 \(2\sim n-1\) 的分数中的任意几个(每个人分 \(1\) 个操作数)就可以了。

Code

ll a[100007];

int main() {
int n = Rint; ll m = Rll;
ll ans = 0;
F(int, i, 1, n) a[i] = Rint;
sort(a + 1, a + n + 1);
if(m) {
F(int, i, 2, n - 1) {
int add = min(a[n] - a[i], m);
a[i] += add, m -= add;
}
int sum = m / (n - 1) * (n - 1), eve = sum / (n - 1);
F(int, i, 2, n) a[i] += eve;
m -= sum;
if(m) {
a[n]++, m--;
F(int, i, 2, n - 1)
a[i] = a[i] + min(1ll, m), m = max(m - 1, 0ll);
}
}
F(int, i, 2, n - 1) ans += a[i];
return write(ans), 0;
}

LuoguP7713 「EZEC-10」打分 题解的更多相关文章

  1. 「GXOI / GZOI2019」简要题解

    「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...

  2. loj#2054. 「TJOI / HEOI2016」树

    题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...

  3. 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)

    [题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...

  4. 洛谷比赛 「EZEC」 Round 4

    洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...

  5. 【转】具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能

    9 月底,苹果正式在北京成立了苹果中国研发中心.近几年,我们也在每年更新的 iOS 系统中不断看到,苹果对中国市场的关照.从早前的九宫格输入法,到最近的骚扰电话拦截,都照顾了国内用户的需求. 在 iO ...

  6. Windows 10 如何使用「系统还原」功能备份系统状态和配置

    https://www.sysgeek.cn/windows-10-system-restore/ 在 Windows 10 系统中,「系统还原」功能旨在创建配置快照,并在检测到系统更改时将其工作状态 ...

  7. 「POJ 3666」Making the Grade 题解(两种做法)

    0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...

  8. LOJ #2538. 「PKUWC 2018」Slay the Spire (期望dp)

    Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spi ...

  9. 「LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie

    题目描述 原题来自:CODECHEF September Challenge 2015 REBXOR 1​​≤r​1​​<l​2​​≤r​2​​≤N,x⨁yx\bigoplus yx⨁y 表示 ...

随机推荐

  1. R之dplyr::select/mutate函数扩展

    select函数 dplyr包select函数用的很多,不过我们一般也是通过正反选列名或数字来选择列. 常见用法如: select(iris,c(1,3)) select(iris,1,3) #同上 ...

  2. python-django-模板标签

    注意:这个控制语句和python的差不多,但是记住必须有endfor 和endif 结尾 模板文件的django格式的注释是不会出现再网页渲染的源代码当中的 使用列子: <!DOCTYPE ht ...

  3. 半主机模式和_MICROLIB 库

    半主机是这么一种机制,它使得在ARM目标上跑的代码,如果主机电脑运行了调试器,那么该代码可以使用该主机电脑的输入输出设备.   这点非常重要,因为开发初期,可能开发者根本不知道该 ARM 器件上有什么 ...

  4. windows系统 svn自动更新

    如果对svn不熟悉,当svn上面有更新时,想看到实时效果,就得去web目录手动更新,比较麻烦 其它svn有一个自动更新的功能 利用 hook   在svn 仓库目录下面有一个hook目录 在post- ...

  5. (转载)VB中ByVal与ByRef的区别

    ByVal是按值传送,在传的过程中不会改变原来的值,仅仅传送的是一个副本, 而 ByRef相反,从内存地址来说,后者是同一个内存地址. ByVal 与 ByRef(默认值)这两个是子过程的参数传递时, ...

  6. Hi3516开发笔记(六):通过HiTools使用USB/串口将uboot、kernel、roofts和userdata按照分区表烧写镜像

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121706033红胖子(红模仿)的博文大全:开发技术集合( ...

  7. OAuth2.0实战!使用JWT令牌认证!

    大家好,我是不才陈某~ 这是<Spring Security 进阶>的第3篇文章,往期文章如下: 实战!Spring Boot Security+JWT前后端分离架构登录认证! 妹子始终没 ...

  8. Scala(三)【函数式编程】

    目录 一.方法和函数 1.方法 1)基本语法 2)简化原则 3)方法参数 2.函数 3.方法和函数的区别 二.高阶函数 三.匿名函数 四.柯里化 五.闭包 一.方法和函数 1.方法 1)基本语法 de ...

  9. Java中方法的定义与使用

    Java中方法的定义与使用 1.方法的定义: 方法是一段可以被重复调用的代码块. 方法的声明: public static 方法返回值 方法名([参数类型 变量--]){ 方法代码体: return ...

  10. 【Python】【Basic】【数据类型】基本数据类型

    1.数字 int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位系统上,整数的位数为64位,取值范围为-2 ...