The Frog's Games

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)
Total Submission(s): 10307    Accepted Submission(s): 4686

 

Problem Description
The annual Games in frogs' kingdom started again. The most famous game is
the Ironfrog Triathlon. One test in the Ironfrog Triathlon is jumping. This
project requires the frog athletes to jump over the river. The width of the
river is L (1<= L <= 1000000000). There are n (0<= n <= 500000) stones lined
up in a straight line from one side to the other side of the river. The
frogs can only jump through the river, but they can land on the stones. If
they fall into the river, they 
are out. The frogs was asked to jump at most m (1<= m <= n+1) times. Now the
frogs want to know if they want to jump across the river, at least what
ability should they have. (That is the frog's longest jump distance).
 

 

Input
The input contains several cases. The first line of each case contains three
positive integer L, n, and m. 
Then n lines follow. Each stands for the distance from the starting banks to
the nth stone, two stone appear in one place is impossible.
 

 

Output
For each case, output a integer standing for the frog's ability at least
they should have.
 

 

Sample Input
 
6 1 2 2 25 3 3 11 2 18
 
 

 

Sample Output
 
4 11
 
 

 

Source
 

 

Recommend
lcy

 


【题意】

有一条长度为L和河流,中间穿插n个石墩,青蛙跳m次经过石凳后到达对岸,求青蛙每次跳跃的最大距离的最小值


【分析】

1.二分左边界left=1,右边界right=L

2判断mid=(left+right)/2是否可以在跳跃m次以内(包括m)到达对岸,具体做法通过贪心来完成,尽量每一次跳跃跨过的石凳最远,这样可以使跳跃的总次数最小

3不断将区间二分,最终left==right时,left就是要求的值


【代码】

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=5e5+5;
int n,m,len,dis[N];
bool judge(int now){
if(dis[1]>now) return 0;
int sp=0,tot=0;
for(int i=1;i<=n;){
if(dis[i]-sp<=now){
if(dis[i]-sp==now||i==n){
tot++;
sp=dis[i];
}
i++;
}
else{
tot++;
sp=dis[i-1];
if(dis[i]-sp>now) return 0;
}
}
return tot<=m;
}
int main(){
while(scanf("%d%d%d",&len,&n,&m)==3){
for(int i=1;i<=n;i++) scanf("%d",dis+i);dis[++n]=len;
sort(dis+1,dis+n+1);
int l=1,r=len,mid,ans=0;
while(l<=r){
int mid=l+r>>1;
if(judge(mid)){
ans=mid;
r=mid-1;
}
else l=mid+1;
}
printf("%d\n",ans);
}
return 0;
}
 

HDU 4004 The Frog's Games(二分答案)的更多相关文章

  1. HDU 4004 The Frog's Games(二分+小思维+用到了lower_bound)

    The Frog's Games Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) ...

  2. HDU 4004 The Frog's Games(二分)

    题目链接 题意理解的有些问题. #include <iostream> #include<cstdio> #include<cstring> #include< ...

  3. HDU 4004 The Frog's Games(2011年大连网络赛 D 二分+贪心)

    其实这个题呢,大白书上面有经典解法  题意是青蛙要跳过长为L的河,河上有n块石头,青蛙最多只能跳m次且只能跳到石头或者对面.问你青蛙可以跳的最远距离的最小值是多大 典型的最大值最小化问题,解法就是贪心 ...

  4. hdu 4004 The Frog's Games

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4004 The annual Games in frogs' kingdom started again ...

  5. HDU 5649 DZY Loves Sorting(二分答案+线段树/线段树合并+线段树分割)

    题意 一个 \(1\) 到 \(n\) 的全排列,\(m\) 种操作,每次将一段区间 \([l,r]\) 按升序或降序排列,求 \(m\) 次操作后的第 \(k\) 位. \(1 \leq n \le ...

  6. HDU - 3586 Information Disturbing 树形dp二分答案

    HDU - 3586 Information Disturbing 题目大意:从敌人司令部(1号节点)到前线(叶子节点)的通信路径是一个树形结构,切断每条边的联系都需要花费w权值,现在需要你切断前线和 ...

  7. 杭电 4004 The Frog's Games 青蛙跳水 (二分法,贪心)

    Description The annual Games in frogs' kingdom started again. The most famous game is the Ironfrog T ...

  8. D - The Frog's Games (二分)

    The annual Games in frogs' kingdom started again. The most famous game is the Ironfrog Triathlon. On ...

  9. HDU 4190 Distributing Ballot Boxes【二分答案】

    题意:给出n个城市,n个城市分别的居民,m个盒子,为了让每个人都投上票,问每个盒子应该装多少张票 二分盒子装的票数, 如果mid<=m,说明偏大了,r应该向下逼近 ,r=mid 如果mid> ...

随机推荐

  1. JAVABEAN必须继承序列化借口的作用

    这里有人家对序列化的测试 http://www.javaeye.com/topic/350137 Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成 ...

  2. 输出到网页前台js代码中包含单引号的处理方法

    描述:后台输出js到前台,如     <script type="text/javascript">   //<![CDATA[       var aStepD ...

  3. Thinkphp5模板继承

    代码 application\index\controller\index.php <?php namespace app\index\controller; use app\index\con ...

  4. LoadRunner javavuser错误排查

    Loadrunner 9.5/11 使用java 开发vsuer script需要的环境配置 本文从两个方面来讲:windows 32位操作系统:windows 64 操作系统开始之前,先说下java ...

  5. Java编程思想学习笔记——类型信息

    前言 运行时类型信息(RTTI:Runtime Type Information)使得我们可以在程序运行时发现和使用类型信息. Java在运行时识别对象和类的信息的方式: (1)一种是RTTI,它假定 ...

  6. web实现QQ头像上传截取功能

    由于最近一段时间比较忙,发现好久没写博客了,给大家分享下最近搞的logo上传截取功能.在实现这个功能之前找了一些jq的插件,最后选定了cropper在github中可以找到. 具体的思路是1:选择上传 ...

  7. 标准SQL资料整理

    最近感觉SQL忘记的很快,于是把SQL的基础知识整理了下. 使用的工具是MindManager 9. 资料来自W3C School:http://www.w3school.com.cn/sql/ind ...

  8. struts2 第一次使用 404 页面引发的一系列问题

    环境:ubuntu  . eclipse.struts-2.3.24 问题描写叙述: 1.  struts2 訪问出现404 2.  严重: Exception starting filter Str ...

  9. VB2010新特性

    1.取消了连接符(1)","之后(2)"()"前后(3)"{}"前后(4)XML(5)连接字符"&"后(6)赋值 ...

  10. 开发还是应该使用linux

    这几天在Windows系统下,安装了几个IDE,体量大,4.5个G,启动速度慢,占用系统资源多,并且最难受的是,这些IDE的限制性太强,只能按照UI给定的规则来操作,例如现在手中有一个已完成的项目,用 ...