poj2456二分法

来源:互联网 发布:饥饿游戏知乎 编辑:程序博客网 时间:2024/06/06 19:16
熊神学长昨天讲课讲了用二分法做给牛找牛棚那题,今天找到了题目并过啦


代码如下:
#include<iostream>#include<algorithm>using namespace std;int n, an[500000], c;int judge(int mid){int i;int temp;//存储最右边的牛棚int cows;//存储已经找到牛棚的牛个数temp = an[0];cows = 1;for (i = 0; i < n; i++){if (an[i]-temp >= mid){temp = an[i];//找到小于mid的牛棚cows++;}if (cows >= c)return 1;}return 0;}int ans(){int l, r;l = 0;r = an[n - 1];int mid;while (l <= r){mid = (l + r) >>1;//cout << l <<"  "<<mid<< "  " << r << endl;if (judge(mid) == 1){l = mid + 1;}elser = mid - 1;//cout <<"     "<< l << "  " << mid << "  " << r << endl;}return l-1 ;}int main(){while (scanf("%d", &n)!=EOF){scanf("%d", &c);for (int i = 0; i < n; i++)scanf("%d", &an[i]);sort(an, an + n);printf("%d\n", ans());}return 0;}

原创粉丝点击