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. ☕【Java深层系列】「技术盲区」让我们一起完全吃透针对于时间和日期相关的API指南

    技术简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的位置比如joda.文章主要对java日期处理的详解,用1.8可以不用joda. 时间概念 首先我们对一些基本的概念 ...

  2. 洛谷 P4548 - [CTSC2006]歌唱王国(概率生成函数)

    洛谷题面传送门 PGF 入门好题. 首先介绍一下 PGF 的基本概念.对于随机变量 \(X\),满足 \(X\) 的取值总是非负整数,我们即 \(P(v)\) 表示 \(X=v\) 的概率,那么我们定 ...

  3. Codeforces 704C - Black Widow(dp)

    Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉这种题被评到 *2900 是因为细节太繁琐了,而不是题目本身的难度,所以我切掉这种题根本不能说明什么-- 首先题目中有一个非 ...

  4. python-django-分页处理

    每个模型都有一个管理器,Manager 通过分页可以先加载一部分的数据内容,然后避免大量的查询带来的等待时间 应用场景是,排行榜,前十条或者 for i in range(100): ...: ... ...

  5. 使用Rainbond实现离线环境软件交付

    一.离线交付的痛点 在传统行业,如政府.能源.军工.公安.工业.交通等行业,为了防止数据泄露和运行安全考虑,一般情况下网络会采取内外网隔离的策略,以防范不必要的风险,毕竟在安全防护方面,网络物理隔离是 ...

  6. vivo 敏感词匹配系统的设计与实践

    一.前言 谛听系统是vivo的内容审核平台,保障了vivo各互联网产品持续健康的发展.谛听支持审核多种内容类型,但日常主要审核的内容是文本,下图是一个完整的文本审核流程,包括名单匹配.敏感词匹配.AI ...

  7. A Child's History of England.24

    Besides all these troubles, William the Conqueror was troubled by quarrels among his sons. He had th ...

  8. abort, about

    abort 变变变: abortion:堕胎 abortionist:(非法)做堕胎手术的,不是所有的ist都是scientist, "All that glitters is not go ...

  9. day06 视图层

    day06 视图层 今日内容 视图层 小白必会三板斧 JsonResponse form表单发送文件 FBV与CBV FBV基于函数的视图 CBV基于类的视图 模板层 模板语法的传值 模板语法之过滤器 ...

  10. Spark基础:(四)Spark 数据读取与保存

    1.文件格式 Spark对很多种文件格式的读取和保存方式都很简单. (1)文本文件 读取: 将一个文本文件读取为一个RDD时,输入的每一行都将成为RDD的一个元素. val input=sc.text ...