题意:一个长为L的河,中间有n个石子,小青蛙需要跳少于m次过河,判断小青蛙每次跳跃最大距离的最小值

最大值最小,用二分

Sample Input
6 1 2
2
25 3 3
11
2
18
Sample Output
4
11
 
2015-07-27:备战区域赛专题
 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int MAXN=;
int n,m,tt,L;
int a[MAXN];
int check(int m)
{
int tot=;
int k=; //目前待的石头
int w=;
while(tot<L)
{
int o=k+;
if(a[o]-a[k]>m)
{
return ;
}
while(m>=a[o]-a[k])
{
o++;
}
k=o-;
tot+=a[o]-a[k];
w++;
}
return w;
}
int main()
{
int i,j,k;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
while(~scanf("%d%d%d",&L,&n,&m))
{
for(i=;i<=n;i++) scanf("%d",&a[i]);
a[]=;
a[n+]=L;
sort(a,a+n+);
a[n+]=;
int l=,r=L;
int ans=;
while(l<=r)
{
int mid=(r+l)>>;
if(check(mid)&&check(mid)<=m)
{
ans=mid;
r=mid-;
}
else l=mid+;
}
printf("%d\n",ans);
}
}
 
 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
using namespace std;
const int maxn=;
int n,m,t,L;
int d[maxn];
bool fun(int x) //判断青蛙跳x的时候需要跳几次过河,贪心,每次选择能跳最远的
{
int now=,tot=;
int cnt=;
while(now<L)
{
now+=x;
while(now>=d[tot]) tot++;
now=d[tot-];
cnt++;
}
if(cnt<=m) return true;
else return false;
}
int main()
{
int i,j,k;
//freopen("1.in","r",stdin);
while(scanf("%d%d%d",&L,&n,&m)!=EOF)
{
for(i=;i<=n;i++) scanf("%d",&d[i]);
sort(d+,d+n+);
d[]=;
d[n+]=L;
d[n+]=; //用来判断跳几次过河的边界
int l=,r=L,mid;
int ans; //记录最小值
for(i=;i<=n+;i++) l=l<d[i]-d[i-]?d[i]-d[i-]:l; //求出两个相邻石子之间的最大距离,也就是青蛙要跳的最小距离
while(l<=r)
{
mid=(l+r)>>;
if(fun(mid)) ans=mid,r=mid-;
else l=mid+;
}
printf("%d\n",ans);
}
}

hdu 4004 二分 2011大连赛区网络赛D的更多相关文章

  1. hdu 4006 优先队列 2011大连赛区网络赛F **

    签到题都要想一会 #include<cstdio> #include<iostream> #include<algorithm> #include<cstri ...

  2. hdu 4001 dp 2011大连赛区网络赛A

    题意:给一些指定长宽高的砖,求能累出的最大高度,不同砖有不同编号,每种编号对下面的砖做出了限制 dp 注意输出要用%I64d,否则会wa,以后不用%lld了 Sample Input 3 10 10 ...

  3. hdu 4005 双联通 2011大连赛区网络赛E *****

    题意: 有一幅图,现在要加一条边,加边之后要你删除一条边,使图不连通,费用为边的费用,要你求的是删除的边的最小值的最大值(每次都可以删除一条边,选最小的删除,这些最小中的最大就为答案) 首先要进行缩点 ...

  4. hdu 4003 树形dp+分组背包 2011大连赛区网络赛C

    题意:求K个机器人从同一点出发,遍历所有点所需的最小花费 链接:点我 Sample Input 3 1 1 //3个点,从1出发,1个机器人 1 2 1 1 3 1 3 1 2 1 2 1 1 3 1 ...

  5. hdu 4002 欧拉函数 2011大连赛区网络赛B

    题意:求1-n内最大的x/phi(x) 通式:φ(x)=x*(1-1/p1)*(1-1/p2)*(1-1/p3)*(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是 ...

  6. HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)

    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: ...

  7. HDU 5875 Function -2016 ICPC 大连赛区网络赛

    题目链接 网络赛的水实在太深,这场居然没出线zzz,差了一点点,看到这道题的的时候就剩半个小时了.上面是官方的题意题解,打完了才知道暴力就可以过,暴力我们当时是想出来了的,如果稍稍再优化一下估计就过了 ...

  8. hdu 4033 2011成都赛区网络赛 余弦定理+二分 **

    二分边长,判断最后内角和是否为2pi,注意l与r的选取,保证能组成三角形 #include<cstdio> #include<iostream> #include<alg ...

  9. hdu 4035 2011成都赛区网络赛E 概率dp ****

    太吊了,反正我不会 /* HDU 4035 dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点 ...

随机推荐

  1. Python socket编程之一:

    soket 编程步骤 # -*- coding: utf-8 -*- ################################################################# ...

  2. js通过alert查看对象或数组内容

    var arr=new Array("Saab","Volvo","BMW"); for(i in arr ){ alert(i); //获 ...

  3. mybatis 使用resultMap实现关联数据的查询(association 和collection )

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...

  4. Data conversion error converting

    词错如果出现在sql语句中,那么多半是类型转换的问题

  5. PHP导出数据到CSV文件函数/方法

    如果不清楚什么是CSV文件,可看如下文章介绍  CSV格式的是什么文件?CSV是什么的缩写? /** * 导出数据到CSV文件 * @param array $data 数据 * @param arr ...

  6. [BZOJ3872][Poi2014]Ant colony

    [BZOJ3872][Poi2014]Ant colony 试题描述 There is an entrance to the ant hill in every chamber with only o ...

  7. ZeroMQ之Publish/Subscribe (Java)

    前面的文章介绍了比较简单的Request/Subscribe模式, 这篇文章介绍更为经典的Publish/Subscribe通信模式用来ZeroMQ的实现,其通信方式如下图: 客户端(subscrib ...

  8. win7+ubuntu双系统中卸载ubuntu方法

    双系统中,如果要卸载ubuntu是不能够直接卸载的,需要使用一些特殊的方法.下面就为大家详细的介绍介绍. Step1 MBR引导区修复: 进入win7,下载个软件MbrFix,放在C:\windows ...

  9. 新浪云php与java连接MySQL数据库

    PHP新浪云连接MySQL <?php $con=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYS ...

  10. HDOJ 1590

    #include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> u ...