LuoguP7713 「EZEC-10」打分 题解
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」打分 题解的更多相关文章
- 「GXOI / GZOI2019」简要题解
「GXOI / GZOI2019」简要题解 LOJ#3083. 「GXOI / GZOI2019」与或和 https://loj.ac/problem/3083 题意:求一个矩阵的所有子矩阵的与和 和 ...
- loj#2054. 「TJOI / HEOI2016」树
题目链接 loj#2054. 「TJOI / HEOI2016」树 题解 每次标记覆盖整棵字数,子树维护对于标记深度取max dfs序+线段树维护一下 代码 #include<cstdio> ...
- 【题解】#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT)
[题解]#6622. 「THUPC 2019」找树 / findtree(Matrix Tree+FWT) 之前做这道题不理解,有一点走火入魔了,甚至想要一本近世代数来看,然后通过人类智慧思考后发现, ...
- 洛谷比赛 「EZEC」 Round 4
洛谷比赛 「EZEC」 Round 4 T1 zrmpaul Loves Array 题目描述 小 Z 有一个下标从 \(1\) 开始并且长度为 \(n\) 的序列,初始时下标为 \(i\) 位置的数 ...
- 【转】具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能
9 月底,苹果正式在北京成立了苹果中国研发中心.近几年,我们也在每年更新的 iOS 系统中不断看到,苹果对中国市场的关照.从早前的九宫格输入法,到最近的骚扰电话拦截,都照顾了国内用户的需求. 在 iO ...
- Windows 10 如何使用「系统还原」功能备份系统状态和配置
https://www.sysgeek.cn/windows-10-system-restore/ 在 Windows 10 系统中,「系统还原」功能旨在创建配置快照,并在检测到系统更改时将其工作状态 ...
- 「POJ 3666」Making the Grade 题解(两种做法)
0前言 感谢yxy童鞋的dp及暴力做法! 1 算法标签 优先队列.dp动态规划+滚动数组优化 2 题目难度 提高/提高+ CF rating:2300 3 题面 「POJ 3666」Making th ...
- LOJ #2538. 「PKUWC 2018」Slay the Spire (期望dp)
Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spi ...
- 「LOJ#10051」「一本通 2.3 例 3」Nikitosh 和异或(Trie
题目描述 原题来自:CODECHEF September Challenge 2015 REBXOR 1≤r1<l2≤r2≤N,x⨁yx\bigoplus yx⨁y 表示 ...
随机推荐
- 力扣 - 剑指 Offer 55 - I. 二叉树的深度
题目 剑指 Offer 55 - I. 二叉树的深度 思路1(DFS) 后续遍历吧,先遍历到最深(递归到末尾返回0),然后从后面一步一步比较取大的值返回,每次返回层数都加1, 执行流程是怎样的:比如其 ...
- TCP、三次握手、四次挥手(图解)
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议,为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传 ...
- git分支切换的一些问题
关于git切换分支后该分支的修改会在另一个分支里面一起修改的问题 修改分支后导致稳定版的主分支里面的文件连带修改. 原因:切换分支前原分支没有提交,导致新建的文件或者文件夹,没有纳入版本管理,所以会被 ...
- 阿里性能专家全方位对比Jmeter和Locust,到底谁更香?
近些年,随着互联网行业的不断发展,用户规模也有了爆发性的增长.产品的性能成为影响用户体验的重要因素.因此,性能测试越来越受到大型互联网企业的重视. 在做性能测试时,通常都会借助一些压测工具来模拟大量的 ...
- 洛谷 P5224 - Candies(循环卷积)
洛谷题面传送门 一道题解长度大概不到 1k 的题,可还是决定写篇题解,因为自己没有做出来( \(1004535809\) 好评( 首先这个 \(\equiv m\pmod{k}\) 有点把我们往单位根 ...
- R语言与医学统计图形-【13】ggplot2几何对象之盒形图
ggplot2绘图系统--几何对象之盒形图 参数: geom_boxplot(mapping = , #lower,middle,upper,x,ymax,ymin必须(有默认) #alpha/col ...
- logname
logname命令用来显示用户名称. 语法 logname(选项) 选项 --help:在线帮助: --vesion:显示版本信息.
- selenium+chrome抓取数据,运行js
某些特殊的网站需要用selenium来抓取数据,比如用js加密的,破解难度大的 selenium支持linux和win,前提是必须安装python3,环境配置好 抓取代码: #!/usr/bin/en ...
- shell 指令
cat/proc/parttitions df -T pstree ext4 是linux 文件系统
- Mac下source tree 下的安装
安装时出现了以下错误,解决方法 git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=source ...