hdu 4004
来源:互联网 发布:golang程序员工资 编辑:程序博客网 时间:2024/05/19 22:28
题目
题目大意:青蛙要跳过长为L的河,中间有n个石头供他休息,但它只能跳m次,问这m次里所跳距离最大值的最小可能
想法:先把石头排序,算出相邻石头的距离b,然后就等价于,把b序列分成m段,对于每一段和的最大值最小化.
二分答案,显然答案在max(b[i])和l之间,我们只需要判断当答案是mid时,把序列分成了多少段逐渐二分
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define N 500005int l,n,m,a[N],b[N],s,t;int main(){ while(~scanf("%d%d%d",&l,&n,&m)) { s=0,t=l; a[0]=0,a[n+1]=l; for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a,a+n+2); for(int i=0;i<=n;i++) b[i]=a[i+1]-a[i],s=max(s,b[i]); while(s<t) { int cnt=0,sum=0,mid=(s+t)>>1; for(int i=0;i<=n;i++) { sum+=b[i]; if(sum>mid) { cnt++;sum=b[i]; } } if(cnt<m) t=mid; else s=mid+1; } printf("%d\n",s); }}
- HDU 4004
- hdu 4004
- HDU 4004
- hdu 4004
- hdu 4004
- HDU 4004
- HDU 4004
- HDU 4004
- hdu 4004
- hdu 4004
- 【二分】hdu 4004
- hdu 4004 二分法
- hdu 4004 二分 过河
- hdu 4004题解
- 二分查找 hdu 4004
- hdu 4004 最大值最小化
- hdu 4004(二分)
- hdu 4004 4006 4010
- 高性能网站设计
- ejb一些杂的代码
- 网络专业人士必上的十大专业网站
- 验证码
- 用RadioButten(或CheckBox)实现div的显示与隐藏
- hdu 4004
- wm8650插5V电源,显示电池满和无法接打电话原因。
- Linq查询中获得随机排序的几种方法
- 2014人人笔试题
- ZOJ:2110 Tempter of the Bone
- Linux能同时启动多少个线程
- Java Collection中的List类
- Linux网络管理员:网络概论
- hdu 4007