Gym - 100989G 二分
链接:ECJTU 2018 Summer Training 1 - Virtual Judge https://vjudge.net/contest/236677#problem/G
谷歌翻译:
距离特工Mahone离开安曼还有K小时!哈姆穆里不喜欢任务中的事情,他不想再次失败。有些地方的学生太多,而其他地方只有很少的学生。
每当Hammouri命令学生改变他的位置时,学生只需要一个小时就能到达新的地方。 Hammouri等到他确定学生在发出新命令之前已到达新地方。因此,每小时只有一名学生可以改变他的位置。
Hammouri希望命令学生改变他们的位置,以便在K小时后,覆盖同一地方的学生的最大数量被最小化。
考虑到覆盖每个地方的学生人数,您的任务是找到K小时后覆盖同一地点的最大学生人数,假设Hammouri正确地最小化了这个数字。
输入
第一行输入包含两个整数M(2≤M≤105)和K(1≤K≤109),其中M是位数,K是代理Mahone离开安曼之前剩余的小时数。
第二行包含M个非负整数,每个整数代表覆盖其中一个地方的学生人数。每个地方最多有109名学生。
产量
假设Hammouri在最近K小时内尽可能地减少了这个数字,打印在K小时后覆盖一个地方的学生的最大数量。
应该看得懂吧。
我们要算在小于等于k次操作后所有地方学生的最大值。
个人思路:我们把所有的值的和sum算出,可以知道,如果sum%M==0,那么学生数ave最小为sum/M,否则最小为sum/M+1;
然后用二分,最小为l=ave,最大就是r=max(M1,...Mi),不断二分查找符合条件的值,同时不断更新就可以了。
时间复杂度为nlogn吧
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define inf 1000000009
ll a[];
ll n,m,ans,ave;
int jug(ll k)//判断是否可行
{
ll count=;
for(int i=;i<n;i++)
{
if(a[i]>k)
count+=a[i]-k;
}
if(count>m)
return ;
return ;
}
void binary(ll l,ll r)
{
ll mid=(l+r)/;
while(l<=r)
{
if(jug(mid))
{
ans=min(ans,mid);
r=mid-;
}
else
l=mid+;
mid=(l+r)/;
}
}
int main()
{
while(cin>>n>>m)
{
ll sum=;
ans=inf;
ll max=;
for(int i=;i<n;i++)
{
cin>>a[i];
sum+=a[i];
if(a[i]>max)
max=a[i];
}
if(sum%n==)//找最小值
ave=sum/n;
else
ave=sum/n+;
binary(ave,max);
cout<<ans<<endl;
}
return ;
}
Gym - 100989G 二分的更多相关文章
- E.Text Editor (Gym 101466E + 二分 + kmp)
题目链接:http://codeforces.com/gym/101466/problem/E 题目: 题意: 给你s串和t串,一个数k,求t的最长前缀串在s串中出现次数不少于k. 思路: 一眼二分+ ...
- Gym - 100989G (二分法)
There are K hours left before Agent Mahone leaves Amman! Hammouri doesn't like how things are going ...
- Gym - 101908G 二分答案+最大流
After the end of the truck drivers' strike, you and the rest of Nlogônia logistics specialists now h ...
- Hacker Cups and Balls Gym - 101234A 二分+线段树
题目:题目链接 题意:有编号从1到n的n个球和n个杯子. 每一个杯子里有一个球, 进行m次排序操作,每次操作给出l,r. 如果l<r,将[l,r]范围内的球按升序排序, 否则降序排, 问中间位置 ...
- Gym 102007I 二分 网络流
题意:给你一张图,每个城市有一些人,有不超过10个城市有避难所,避难所有容量上限,问最快多久可以让所有人进入避难所? 思路:二分时间,对于每个时间跑一遍最大流,判断最大流是不是人数即可.我们还需要用二 ...
- G - 土耳其冰淇凌 Gym - 101194D(二分答案 + 贪心检验)
熊猫先生非常喜欢冰淇淋,尤其是冰淇淋塔.一个冰淇淋塔由K个冰淇淋球堆叠成一个塔.为了使塔稳定,下面的冰淇淋球至少要有它上面的两倍大.换句话说,如果冰淇淋球从上到下的尺寸是A0, A1, A2,···, ...
- Gym - 100283F F. Bakkar In The Army —— 二分
题目链接:http://codeforces.com/gym/100283/problem/F F. Bakkar In The Army time limit per test 2 seconds ...
- Gym 101064 D Black Hills golden jewels (二分)
题目链接:http://codeforces.com/gym/101064/problem/D 问你两个数组合相加的第k大数是多少. 先sort数组,二分答案,然后判断其正确性(判断过程是枚举每个数然 ...
- Codeforces Gym 100803G Flipping Parentheses 线段树+二分
Flipping Parentheses 题目连接: http://codeforces.com/gym/100803/attachments Description A string consist ...
随机推荐
- python大法好——修改文件、函数
1.修改文件 补充上次没洗完的: 想要修改某个文件里一块地方,可以使用seek函数找到位置write函数修改. 是不是觉得这很简单? 但是如果你这样操作很可能会出现乱码. 因为由于字节数的不同,编码的 ...
- VMware设置cpu虚拟化,intel VT-x
1.关闭虚拟机 2.右键需要更改的虚拟机--设置--处理器
- ip黑白名单防火墙frdev的原理与实现
汤之盘铭曰 苟日新 日日新 又日新 康诰曰 作新民 诗曰 周虽旧邦 其命维新 是故 君子无所不用其极 ——礼记·大学 在上一篇文章<DDoS攻防战 (二) :CC攻击工具实现与防御理论>中 ...
- centos 主机名突然变成bogon的解决方法
主机名突然变成bogon,访问网络可能会出现问题(也可能没问题,我的就没问题),可能用到主机名的服务(比如说:mysql)可能也会出现访问不了. 所以我们需要解决以下问题,本人的解决方法: 主机名 ...
- 机器学习进阶-案例实战-图像全景拼接-书籍SIFT特征点连接 1.cv2.drawMatches(对两个图像的关键点进行连线操作)
1.cv2.drawMatches(imageA, kpsA, imageB, kpsB, matches[:10], None, flags=2) # 对两个图像关键点进行连线操作 参数说明:im ...
- SVM视频跟踪
# -*- coding: utf-8 -*- """ Created on Thu Nov 8 21:44:12 2018 @author: xg "&quo ...
- pycharm 直接删掉数据表之后,makemigration和migrate 之后,数据库中依然没有生成数据表的问题
综合分析一下行程这个问题的原因: 在终端中运行 select * from django_migrations; 查看 提交的记录,如果你的表删掉了,记录还在,那么数据库会觉得,这个表依然是存在的,所 ...
- Oracle 学习总结 - 物理结构
参考了很多文章,学习自网络 数据库 = 实例(数据库启动时初始的进程和内存结构,进程会作用到对应的内存区域-数据写入器到写入内存缓冲区,日志写入器到日志缓冲区等) + 数据库(物理文件-控制文件,数据 ...
- c# Type.InvokeMember用法
函数原型: public object InvokeMember(string, BindingFlags, Binder, object, object[]);string:你所要调用的函数名Bin ...
- 使用ubuntu远程连接windows, Connect to a Windows PC from Ubuntu via Remote Desktop Connection
from: https://www.digitalcitizen.life/connecting-windows-remote-desktop-ubuntu NOTE: This tutorial w ...