NYOJ-疯牛(贪心)
疯牛
描述:
农夫 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-疯牛(贪心)相关推荐
- nyoj 疯牛(二分搜索+贪心)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=586 疯牛 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 ...
- NYOJ疯牛【二分】
疯牛 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些 ...
- nyoj248 BUYING FEED
原题: http://acm.nyist.net/JudgeOnline/problem.php?pid=248 //nyoj 248 //贪心:关键在于把路程的费用也加入到商品的单价中来,然后每次买 ...
- nyoj 586 疯牛(二分+贪心)
疯牛 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...
- NYOJ 586 疯牛 POJ 2456(二分搜索 + 贪心)
疯牛 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...
- 《贪心算法》— NYOJ 586 疯牛
疯牛 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...
- POJ 2456 疯牛(二分+贪心)
疯牛 时间限制: 1000 ms | 内存限制: 65535 KB 难度: 4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些 ...
- NYOJ 586 疯牛
疯牛 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间 ...
- 基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...
1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例: 区间长度8,可选的覆盖线段[2,6],[1, ...
- NYOJ - 非洲小孩(贪心)
http://nyoj.top/problem/1036 内存限制:64MB 时间限制:1000ms 题目描述: 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经 ...
最新文章
- 制作一个状态栏中跑马灯效果_snapseed制作“照片中的照片”画中画效果的方法...
- [六]RabbitMQ-客户端源码之AMQCommand
- IIS出现The specified module could not be found解决方法
- [Windows核心编程]堆
- html5 在线抽奖,HTML5大转盘抽奖特效代码
- discuz3x ucenter 与cas 初步整合
- win10以太网未识别的网络的解决方法
- We're on the cusp of deep learning for the masses. You can thank Google later
- 使用Navicat和Transact-SQL语言两种方法创建、修改和删除表
- 论游戏中Buff的实现
- js身份证号码带*号处理
- 解决麒麟V10上传文件乱码问题
- 综述:视频和图像去雾算法以及相关的图像恢复和增强研究
- Xshell6 提示要继续使用此程序,您必须应用最新的更新或使用新版本
- 埃森哲 java_【埃森哲JAVA软件工程师面试】要求挺高,从面试到拿到offer历经时间长-看准网...
- Vue2.x动态添加路由实现
- win7 MW300U 共享wifi
- 不眠的硅谷——Just For Fun
- Android复杂界面布局解决方案
- CS:APP第三章知识总结(汇编语言、机器码、寄存器、编译器优化、函数底层实现、浮点指令)