本题大意:在坐标轴上有n个点,现在打算在这n个点上建立c个牛棚,由于牛对厂主的分配方式表示很不满意,它很暴躁,所以它会攻击离它很近的牛来获得快感,这件事让厂主大大知道了,他怎么可能容忍?所以他决定有策略的对牛进行分配仓库,他想让每头牛之间的距离尽可能远,现在他来求助你......

  本题思路:本题一看就是二分啦嘻嘻嘻,有上界有下界求最优你敢信?演员......

  回归正题...我们可以选择最大值作为上界,选择最小值作为下界,接着二分呀,我们枚举的当然是我们事先假定的每个牛之间的最小距离x(也就是说牛舍之间的距离大于x就可以建立牛舍了),那么问题就一目了然了,我们只需要看在给定的所有点中,是否存在至少c个点满足他们之间的距离都大于等于x呢满足就是true了,然后就是二分思想改变这个最小距离x的取值,如果成立则说明需要扩大范围,如果不成立则需要缩小范围,当然是二分思想扩大,然后取那个最优的就行了呀,也就是距离最大的那个呀。哦对了,有个问题没说清楚,所以为什么是在可行的时候我们反而扩大范围?因为我们是在数组内寻找满足上面我们说的条件的值,所以C(x)当然是越大越好。

  那么何时我们结束二分呢?我们可以考虑到,所有牛舍的距离都不会重合,并且不能让他们相邻(会干架),所以我们判断当L - R > 1不成立时就结束二分。

  嘤嘤嘤,所以我们上面讲的那个判断条件到底搞懂了没?重要的就是这一环了嘤嘤嘤,咱也不知道,咱也不敢问,不会的童鞋再回去看一下呀。

参考代码(???是我讲的不够清楚么还是???自己实现嘻嘻嘻):

  

 #include <cstdio>
#include <algorithm>
#define mid ((l + r)) / 2
using namespace std; const int maxn = + , INF = 1e9;
int value[maxn];
int n, c; bool check(int x) {
int last = ;
for(int i = ; i < c; i ++) {
int cur = last + ;
while(cur < n && value[cur] - value[last] < x) cur ++;
if(cur == n) return false;
last = cur;
}
return true;
} int main() {
scanf("%d %d", &n, &c);
for(int i = ; i < n; i ++)
scanf("%d", &value[i]);
sort(value, value + n);
int l = , r = INF;
while(r - l > ) {
if(check(mid))
l = mid;
else
r = mid;
}
printf("%d\n", l);
return ;
}

POJ-2456.Aggressivecows.(二分求解最大化最小值)的更多相关文章

  1. POJ 3258(二分求最大化最小值)

    题目链接:http://poj.org/problem?id=3258 题目大意是求删除哪M块石头之后似的石头之间的最短距离最大. 这道题目感觉大致代码写起来不算困难,难点在于边界处理上.我思考边界思 ...

  2. codeforce 1070 E Getting Deals Done(二分求最大化最小值)

    Polycarp has a lot of work to do. Recently he has learned a new time management rule: "if a tas ...

  3. POJ:2456 Aggressive cows(z最大化最小值)

    描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000, ...

  4. [ACM] POJ 3258 River Hopscotch (二分,最大化最小值)

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6697   Accepted: 2893 D ...

  5. POJ_2456 Aggressive cows 【二分求最大化最小值】

    题目: Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are l ...

  6. poj 3258"River Hopscotch"(二分搜索+最大化最小值问题)

    传送门 https://www.cnblogs.com/violet-acmer/p/9793209.html 题意: 有 N 块岩石,从中去掉任意 M 块后,求相邻两块岩石最小距离最大是多少? 题解 ...

  7. POJ 3258:River Hopscotch (最大化最小值)

    [题意] 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值 ...

  8. poj 3104 晾衣服问题 最大化最小值

    题意:n件衣服各含有ai水分,自然干一分钟一个单位,放烘干机一分钟k个单位,问:最短时间? 思路: mid为最短时间 如果 a[i]-mid>0说明需要放入烘干机去烘干 烘干的时间为x  那么满 ...

  9. poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分

    poj 2456 Aggressive cows && nyoj 疯牛 最大化最小值 二分 题目链接: nyoj : http://acm.nyist.net/JudgeOnline/ ...

随机推荐

  1. 【串线篇】spring boot自定义starter

    starter: 一.这个场景需要使用到的依赖是什么? 二.如何编写自动配置 启动器只用来做依赖导入:(启动器模块是一个空 JAR 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库) ...

  2. QLCDNumber

    继承于  QFrame 展示LCD样式的数字,它可以显示几乎任何大小的数字,它可以显示十进制,十六进制,八进制或二进制数 能够展示的字符: 0/O, 1, 2, 3, 4, 5/S, 6, 7, 8, ...

  3. button标签设置line-height问题

    默认设置line-height是不会有问题的. 加了边框后就会出现问题. 如果想要解决的话.就调整行高,自己满意为止.

  4. 缓存算法LRU笔记

      LRU原理与分析 LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据.而往往最常读取的,也是读取 ...

  5. 无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息"无法在此会话中启动更多的事务"。

    无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务.由于 XACT_ABORT 选项已设置为 OFF,因 ...

  6. js 文件下载 兼容ie

    前置条件:后台接口返回二进制流文件 一.设置前端请求的的 responseType: 'blob' 二.接收请求数据并调用下载 var content = res.data // 接口返回的二进制流v ...

  7. Oracle 与 ODAC 一起安装

    Oracle 需要设置path变量支持运行,ODAC安装时会将其路径加入path变量. 导致先搜索到ODAC,连接出现:ora-12560: TNS:protocol adapter error 将p ...

  8. Vue在移动端App中使用的问题总结

    1.客户端中弹出键盘使得fixed布局错乱 Vue 在移动端中使用,当弹出键盘时,fixed 布局的元素可能会被键盘顶起. 例子图示及解决方法参考:https://blog.csdn.net/qq_3 ...

  9. Dijkstra算法求最短路模板

    Dijkstra算法适合求不包含负权路的最短路径,通过点增广.在稠密图中使用优化过的版本速度非常可观.本篇不介绍算法原理.只给出模板,这里给出三种模板,其中最实用的是加上了堆优化的版本 算法原理 or ...

  10. R 配色(挑花眼的色卡19色)

    cols =c("#999999","#FF0099", "#E69F00", "#56B4E9", "#00 ...