疯牛

描述:

农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).
但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发生争斗。为了不让牛互相伤害。John决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是什么呢?
输入:
有多组测试数据,以EOF结束。
第一行:空格分隔的两个整数N和C
第二行——第N+1行:分别指出了xi的位置
输出:
每组测试数据输出一个整数,满足题意的最大的最小值,注意换行。
样例输入:
5 3
1
2
8
4
9
样例输出:
3

程序代码:

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int a[100005],n,c;
void Two();//二分搜索
int greed(int mid);//贪心
int main()
{    int i;while(scanf("%d%d",&n,&c)!=EOF)    {    for(i=0;i<n;i++)    scanf("%d",&a[i]);    sort(a,a+n);    Two();    }    return 0;
}
int greed(int mid)
{    int i,count=1,t=a[0]; //count是指放了几头牛,从1开始。t用来表示当前的房间号  for(i=1;i<n;i++)  if(a[i]-t>=mid)//判断两个房间之间的距离   {    count++;  t=a[i];//修改t的值,即修改当前房间号if(count>=c)//判断是否可以放下C头牛    return 1;    }   return 0;
}
void Two()
{    int low=0,high=a[n-1]-a[0],mid;    while(low<=high)    {    mid=(low+high)/2;//mid即为最小房间号与最大房间号距中间的距离    if(greed(mid))    low=mid+1; //所求距离>=mid,可以继续增大试探   else    high=mid-1;//所求距离<mid,减小来试探    }    printf("%d\n",low-1); //由于在之前距离+1,所以此时-1
}

NYOJ-疯牛(贪心)相关推荐

  1. nyoj 疯牛(二分搜索+贪心)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=586 疯牛 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 ...

  2. NYOJ疯牛【二分】

    疯牛 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些 ...

  3. nyoj248 BUYING FEED

    原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=248 //nyoj 248 //贪心:关键在于把路程的费用也加入到商品的单价中来,然后每次买 ...

  4. nyoj 586 疯牛(二分+贪心)

    疯牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...

  5. NYOJ 586 疯牛 POJ 2456(二分搜索 + 贪心)

    疯牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...

  6. 《贪心算法》— NYOJ 586 疯牛

    疯牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...

  7. POJ 2456 疯牛(二分+贪心)

    疯牛 时间限制: 1000 ms  |  内存限制: 65535 KB 难度: 4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些 ...

  8. NYOJ 586 疯牛

    疯牛 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...

  9. 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...

    1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...

  10. NYOJ - 非洲小孩(贪心)

    http://nyoj.top/problem/1036 内存限制:64MB 时间限制:1000ms 题目描述: 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经 ...

最新文章

  1. 制作一个状态栏中跑马灯效果_snapseed制作“照片中的照片”画中画效果的方法...
  2. [六]RabbitMQ-客户端源码之AMQCommand
  3. IIS出现The specified module could not be found解决方法
  4. [Windows核心编程]堆
  5. html5 在线抽奖,HTML5大转盘抽奖特效代码
  6. discuz3x ucenter 与cas 初步整合
  7. win10以太网未识别的网络的解决方法
  8. We're on the cusp of deep learning for the masses. You can thank Google later
  9. 使用Navicat和Transact-SQL语言两种方法创建、修改和删除表
  10. 论游戏中Buff的实现
  11. js身份证号码带*号处理
  12. 解决麒麟V10上传文件乱码问题
  13. 综述:视频和图像去雾算法以及相关的图像恢复和增强研究
  14. Xshell6 提示要继续使用此程序,您必须应用最新的更新或使用新版本
  15. 埃森哲 java_【埃森哲JAVA软件工程师面试】要求挺高,从面试到拿到offer历经时间长-看准网...
  16. Vue2.x动态添加路由实现
  17. win7 MW300U 共享wifi
  18. 不眠的硅谷——Just For Fun
  19. Android复杂界面布局解决方案
  20. CS:APP第三章知识总结(汇编语言、机器码、寄存器、编译器优化、函数底层实现、浮点指令)

热门文章

  1. 如何迅速定位***路由器故障
  2. 密钥--公钥、私钥方式
  3. mysql------explain工具
  4. python locust 性能测试:HOOKS钩子方法
  5. (十一)C语言中内存堆和栈的区别
  6. Broadcom fullmac WLAN 驱动解析(1)
  7. Java——类和对象
  8. 接口测试--apipost中cookie管理器的使用
  9. 基于 jmeter 的分布式性能测试实战
  10. php 回调通知 连连支付_php app支付宝回调(异步通知)详解