poj 2456(二分+贪心)(最大化最小值)
2017-04-26 22:40
316 查看
题目链接:http://poj.org/problem?id=2456
题目大意:有N件牛舍,M头牛。现在要把M头牛分到牛舍中,要求每两头牛之间的距离尽量大。输出分配后的最小距离。
分析:用二分搜索找最近的两头牛的距离d,用贪心判断每两头牛的距离是否都不小于d。
ac代码
题目大意:有N件牛舍,M头牛。现在要把M头牛分到牛舍中,要求每两头牛之间的距离尽量大。输出分配后的最小距离。
分析:用二分搜索找最近的两头牛的距离d,用贪心判断每两头牛的距离是否都不小于d。
ac代码
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; const int M = 100000 + 5; int a[M]; int N, C; bool judge(int d) { int x = 0, y; for(int i = 0; i < C; i++) { y = x + 1; while(y < N && a[y] - a[x] < d) y++; if(x == N)return false; x = y; } return true; } int main() { scanf("%d %d", &N, &C); for(int i = 0; i < N; i++) scanf("%d", &a[i]); sort(a, a + N); int lb = 0, ub = a[N - 1]; while(ub - lb > 1) { int mid = (lb + ub) / 2; if(judge(mid))lb = mid; else ub = mid; } printf("%d\n", lb); return 0; }
相关文章推荐
- NYOJ 586 疯牛 & POJ 2456(二分搜索 + 贪心)(最大化最小值)
- poj 2456 Aggressive cows (二分+贪心) (最大化最小值)
- poj 2456 最大化最小值(二分+贪心)
- 【贪心专题】POJ 2456 Aggressive cows && NYOJ 586 疯牛(最大化最小值 贪心+二分搜索)
- 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 3258 3273 3104 3045(二分搜索-最大化最小值)
- 【POJ】2456 - Aggressive cows 二分->最大化最小值
- POJ_2456_Agressive_cows_(二分,最大化最小值)
- Aggressive cows POJ 2456 (二分,最大化最小值)
- POJ 2456 Aggressive cows(二分答案,最大化最小值)
- POJ 2456 Aggressive cows (牛舍安放_二分+最大化最小值)
- 《挑战程序设计竞赛》3.1.1 二分搜索-最大化最小值 POJ1064 2456 3258 3273 3104 3045
- CSU-ACM2017暑假集训2-二分搜索 poj-2456 Aggressive cows-最大化最小值
- POJ - 2456 Aggressive cows(二分搜索:最大化最小值)
- POJ 3258 River Hopscotch(贪心+二分查找 最大化最小值)