传送门:Problem A

https://www.cnblogs.com/violet-acmer/p/9682082.html

题意:

  公园里有n个沙滩,a[i]表示第i个沙滩初始人数,现有m个人可以到任意沙滩,在这m个人全部到达任意沙滩后,求沙滩最多人数的最大值和最小值

  例如:

  假设有n=5,m=3

  a[i] = :1 2 3 4 5

  沙滩人数最大化便是这m个人全到第5个沙滩上,a[5]=8,当前所有沙滩的最大值为8

  使沙滩人数最大值尽量最小化,第一个人可以来到第一个沙滩,第二个人来到第二个,第三个人来到第三个,此时当前所有沙滩最大值为5

  或这3个人全来到第一个沙滩,第一个沙滩的总人数为4,故此时最大值还是5

  但若有任意一人来到第五个沙滩,则最大值就变成了6 > 5

题解:

  易得最大值最大化便是当前沙滩最大人数+m;

  最小化:这m个人优先来到最大值之外的其余沙滩,如果所有沙滩的人数都变成了起初值最大的那个沙滩的人数,则将剩余的人平均分到这n个沙滩上

AC代码:

 #include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=; int n,m;
int a[maxn]; void Initial()
{
scanf("%d%d",&n,&m);
for(int i=;i <= n;i++)
scanf("%d",&a[i]);
}
void Process()
{
sort(a+,a+n+);
int res=m;
for(int i=;i < n;++i)
res -= (a[n]-a[i]);
if(res <= )
printf("%d %d\n",a[n],a[n]+m);
else//如果res 有剩余
{
int k=res/n;//平均每个沙滩有k个人新加入
printf("%d %d\n",a[n]+k+(res%n == ? :),a[n]+m);
}
}
int main()
{
Initial();
Process();
}

  

最新文章

  1. 十分钟了解分布式计算:GraphX
  2. WPF系列:样式
  3. 在linux设置环境变量
  4. kendoui-在线文本编辑器
  5. 找出文件正在被哪个windows进程使用的方法
  6. hdu4135Co-prime 容斥原理水题
  7. ffplay for mfc 代码备忘录
  8. yum仓库
  9. 排序—时间复杂度为O(n2)的三种排序算法
  10. java课程之团队开发冲刺阶段1.1
  11. 网站之.htaccess文件
  12. printf 中的 %.*s
  13. 扩展layui中的自带字体图标
  14. python -input用户输入
  15. selenium 如何处理table
  16. mvcpager 表单提交时无法获取pageindex的值
  17. Spring 小知识
  18. [杂谈]ACM启程
  19. python 闭包@装饰器
  20. Windows平台下安装.net coreclr

热门文章

  1. Shell学习笔记一
  2. JS冷门知识盘点
  3. 网易2018.03.27算法岗,三道编程题100%样例AC题解
  4. 不重叠的线段 51nod
  5. SCRUM 12.22
  6. 个人博客作业Week7(阅读文章,心得体会)
  7. 访谈:BugPhobia’s Brief Communication
  8. text2
  9. 使用git命令创建分支到团队项目
  10. mysql 和php 保留2位小数