POJ 2456 Aggressive cows(二分)
来源:互联网 发布:数据库建立流程图 编辑:程序博客网 时间:2024/05/16 15:00
题目链接:http://poj.org/problem?id=2456
题意:有一排n个牛舍,坐标分别为xi,有m头牛,希望尽可能把他们之间分开,求他们之间最近的两头牛之间的距离最大可以拉到多少。这是二分中最大化最小值的题目,英文的题目又最大又最小有的人不易理解。
思路:显然两头最近的牛的距离太大将没有一种方式安置在牛舍中,两头最近的牛距离越小就越能放置在牛舍中,所以用把答案二分出来,每个mid要模拟放置暴力下可不可以放得下。
//532K188MS#include<cstdio>#include<iostream>#include<algorithm>#define inf 1000001000using namespace std;int n,m;int a[100100];bool ok(int x){ int cnt=1; int tmp=a[1]; while(cnt!=m){ tmp+=x; int *p=lower_bound(a+1,a+1+n,tmp); //这里不需要用,只不过练习下这个函数。 if(p==a+1+n) return false; tmp=*p; cnt++; } return true;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } sort(a+1,a+n+1); int lb=0,ub=inf; while(ub-lb>1){ int mid=(lb+ub)/2; if(ok(mid)){ lb=mid; } else ub=mid; } printf("%d\n",lb); return 0;}
总结一下对于整数二分的模版:
把lb和ub选在有意义的区间之外,然后二分条件是ub-lb>1, mid满足就直接赋给lb(或ub),不满足就直接赋给ub(lb)
0 0
- POJ 2456 Aggressive cows(二分)
- POJ 2456 - Aggressive cows(二分)
- poj 2456 Aggressive cows(贪心+二分)
- poj 2456 Aggressive cows(贪心+二分)
- POJ 2456 Aggressive cows(二分)
- POJ 2456 Aggressive cows (二分搜索)
- POJ 2456 Aggressive cows(二分)
- POJ - 2456 Aggressive cows(二分查找)
- POJ 2456 Aggressive cows (贪心 + 二分)
- poj 2456 Aggressive cows (二分查找)
- POJ 2456 Aggressive cows (二分、贪心)
- Poj 2456 Aggressive cows (二分逼近)
- POJ 2456 Aggressive cows (二分算法)
- POJ 2456 Aggressive cows (二分查找)
- poj 2456 Aggressive cows (二分查找)
- POJ 2456 Aggressive cows 二分
- POJ 2456 Aggressive cows 二分
- poj 2456 Aggressive cows (二分)
- JavaBean的使用
- string==NULL 和*str=='\0'的不同
- 关于spring3中初始化问题$EnhancerBySpringCGLIB$eff0996c@1651ab4
- POJ 1064 Cable master(初遇二分)
- FPGA,altera的opencl之学习疑问
- POJ 2456 Aggressive cows(二分)
- 冬令营第十四天
- web.xml配置
- JS (window.showModalDialog) 弹窗中值的获取方式!
- oracle中Where子句的条件顺序对性能的影响
- JBPM中流程变量和任务变量的区别
- 小型团队的测试该何去何从
- Lintcode - Heapify
- Android - Gradle项目构建依赖