POJ2456 -- Aggressive cows(二分搜索)
来源:互联网 发布:windos无法连接到网络 编辑:程序博客网 时间:2024/05/18 18:46
问题描述:
有n个摊位,坐标分别为x1,x2...xn
从中选择c个摊位,使这c个摊位任意两个之间的最小距离最大
可以换一个角度思考:选择一个距离x 代表这c个选择的摊位中的最小距离
我们要使用二分法搜索的就是满足条件的最大x
令C(x):满足条件的最大x 这里需要满足的条件是:由于我们选择的摊位最小距离为x 那么我们必须保证这n个摊位中可以找到c个摊位,使相邻的2个摊位的距离大于等于x
代码:
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int stall[100000 + 5];const int INF = 1000000000;int n ,c;bool C(int x){int num = 0; num = 1;int now = stall[0]; for(int i= 1 ;i<n ;i++){if(stall[i] >= now + x){now = stall[i];num++;if(num >=c)return true;}}return false;}int main(){scanf("%d %d",&n,&c);for(int i = 0;i<n;i++){scanf("%d",&stall[i]);}sort(stall,stall +n);int l = 0;int r = INF;for(int i = 0;i<100;i++){int mid = (l+r)/2;if(C(mid)) l = mid;elser = mid;}printf("%d\n",l);}
由于我们要解决的是满足条件的最大值
也就是用二分搜索法解决最大化问题
因此当满足条件时,应把区间由(l,r)改为(mid,r),
阅读全文
0 0
- POJ2456 -- Aggressive cows(二分搜索)
- POJ2456 Aggressive cows(二分搜索)
- POJ2456 Aggressive cows (二分)
- POJ2456 Aggressive cows 二分
- POJ2456 Aggressive cows(二分+贪心)
- POJ2456 Aggressive cows 二分+判断
- POJ2456 Aggressive cows(对整数二分)
- poj2456-Aggressive cows(nyoj586)【贪心-二分】
- POJ2456 Aggressive cows 最大值最小化(二分)
- POJ2456(Aggressive cows)(贪心+二分)
- POJ2456 Aggressive cows
- POJ2456 Aggressive cows
- POJ2456-Aggressive cows
- POJ2456 Aggressive cows
- POJ2456 Aggressive cows
- POJ2456-Aggressive cows
- poj2456 Aggressive cows
- codevs 2982 Aggressive cows愤怒的奶牛poj2456--二分答案
- 文本式留言板
- IntelliJ IDEA 2017.01配置jdk和tomcat
- Android流量校准
- JDBC(11)—数据库连接池
- Oracle表分区
- POJ2456 -- Aggressive cows(二分搜索)
- MySQL 存储过程和函数
- Linux运维笔记
- [库]nimble的串行与并行
- 2017 Multi-University Training Contest
- Codeforces 427Div2 D、835D Palindromic characteristics
- 单链表面试题汇总
- 【南阳理工oj】喷水装置(一)(贪心)
- C语言实现用指定字符切割字符串并返回数组