码迷,mamicode.com
首页 > 其他好文 > 详细

【二分查找】POJ2456-Aggressive cows

时间:2015-09-11 23:27:46      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

【题目大意】

有N间牛舍和M头牛,告诉你每个牛舍的位置,求出两头牛之间最小距离的最大值。

【思路】

二分判断两头牛之间的最小距离d,通过贪心法进行验证。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 const int MAXN=100000+500;
 8 int n,m;
 9 int pos[MAXN];
10 
11 int whether(int d)
12 {
13     int now=1;
14     int nowpos=pos[0]+d;
15     for (int i=1;i<m;i++)
16     {
17         while (pos[now]<nowpos && now<n) now++;
18         if (now==n) 
19         {
20             return 0;
21         }
22         nowpos=pos[now]+d;
23     }
24     return 1;
25 }
26 
27 int main()
28 {
29     scanf("%d%d",&n,&m);
30     for (int i=0;i<n;i++) scanf("%d",&pos[i]);
31     sort(pos,pos+n);
32     
33     int lb=0,ub=pos[n-1];
34     while (ub-lb>1)
35     {
36         int mid=(lb+ub)/2;
37         if (whether(mid)) lb=mid;
38         else ub=mid;
39     }
40     cout<<lb<<endl;
41     return 0;
42 }

 

【二分查找】POJ2456-Aggressive cows

标签:

原文地址:http://www.cnblogs.com/iiyiyi/p/4802225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!