题目翻译
二分法(其实两个单词的意思分别是河,跳格子游戏,至于为啥翻译成二分法- -只能说英语博大精深啊)
奶牛每年举办一场有特色的跳格子游戏(很明显题目翻译错误)涉及到在河里从一块岩石跳到另一块岩石上,这个令人兴奋的游戏发生在一条又长又直的河中,从河的开始到结尾有一些石头,开始有一个L表示河的长度(1 ≤ L ≤ 1,000,000,000), 然后河中间有N快石头0 ≤ N ≤ 50,000, 每一块石头都位于Di(距离起点)(0 < Di < L).。
参加这个游戏,每个带牛都要从起点到终点,只能从一块岩石跳到另一块岩石,一些敏捷的奶牛可以蹦到最后,结束不是在河里。
农民约翰最自己的牛很自豪并且每年都观看这个节目,但是随着时间的流逝,他厌倦观看其他农民的牛缓慢的从一块岩石到下一块岩石的跳跃,所以他打算删除几块石头以增大距离,他知道他不能删除开始和结束的岩石但是他认为他有足够的物资移走M快石头, (0 ≤ M ≤ N).
看了数据后明白什么意思了,就是一直最小距离的石头,最后找到最小的石头间距。
分析:查找最短的距离应该不难不过想要知道删除那块石头貌似就不太容易了,想到优先删除左右距离比较小的,不过数据貌似不弱啊,暴力肯定是错的死死的,好吧应该按照题目的方法来一次吧,试试二分^ ^
有点不敢相信啊,竟然A掉了,我去,不太敢相信
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 50005
int Min, a[maxn], b[maxn];
int EF(int a[], int n, int len, int M)
{
    int i, k=0;
    for(i=1; i<n; i++)
    {
        int dis = a[i] - a[k];
        if(dis < len)
        {
            if(M)M--;
            else return 0;
        }
        else
        {
            if(Min > dis)
                Min = dis;
            k = i;
        }
    }
    return 1;
}
int main()
{
    int L, N, M;
    while(scanf("%d%d%d", &L, &N, &M) != EOF)
    {
        int i, j, A=0;
        for(i=0; i<N; i++)
            scanf("%d", &a[i]);
        a[N++] = 0, a[N++] = L;
        sort(a, a+N);
        int l=0, r=L, Mid;
        while(l<=r)
        {
            Mid = (l+r)/2;
            Min = L+1;
            int ans=EF(a, N, Mid, M);
            if(ans)
            {
                l=Min+1;
                if(A < Min)//保存最大的合法值
                    A = Min;
            }
            else
                r=Mid-1;
        }
        printf("%d\n", A);
    }
    return 0;
}
/*
25 5 5
2
14
11
21
17
3 2 0
1
2
a

*/

poj3258的更多相关文章

  1. poj3258 River Hopscotch(二分最小值,好题)

    https://vjudge.net/problem/POJ-3258 二分最小值,判断需要删去的点的个数,如果大于给定,则直接return 0,则说明该数需要再小. 最后注意,起点是0终点是l,起点 ...

  2. 二分--POJ-3258

    POJ-3258,二分 题目 Description Every year the cows hold an event featuring a peculiar version of hopscot ...

  3. POJ3258 River Hopscotch

    地址 别人的代码,自己边界总是控制不好,还不知道哪里错了!思维!这种问题代码越简洁反而越不容易错吧.. #include<stdio.h> #include<algorithm> ...

  4. River Hopscotch(二分POJ3258)

    River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9263 Accepted: 3994 Descr ...

  5. poj3258 二分 最小值最大化问题

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10842   Accepted: 4654 ...

  6. POJ--3258 River Hopscotch (最小值最大化C++)

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15273   Accepted: 6465 ...

  7. POJ3258 River Hopscotch 2017-05-11 17:58 36人阅读 评论(0) 收藏

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 13598   Accepted: 5791 ...

  8. POJ3258(最大化最小值)

    River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11155   Accepted: 4785 ...

  9. POJ3258 River Hopscotch —— 二分

    题目链接:http://poj.org/problem?id=3258 River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total ...

随机推荐

  1. java 更改list 某一元素?

    if(!elTd.getElementsByTag("p").isEmpty()){        int i=eduList.size();        if(i>0){ ...

  2. asp.net Handler中的IsReusable属性及在Handler中使用Session

    大家在用HttpHandler的时候,一般都会有两个大的疑问(当然,前提是你有钻研精神的话,呵呵) 1. IsReusable到底什么意思? 老实说,这个属性很多人都感兴趣,但搞懂的人确实不多.MSD ...

  3. centos7 开机启动某些程序的方法

    针对svn,nginx每次重启后均要手工启动,好麻烦,所以考虑将其做成开机启动,做成服务好麻烦,考虑像windows 一样,放在某个启动项中完成. 打开启动文件后,发现里面文件内容如下: #!/bin ...

  4. Keil的使用-1创建项目和工程

    下载keil,注意不要使用MDK版本(主要是arm开发使用),大小约54M 安装过程不再详述 安装Keil成功并运行后,新建项目,   创建新项目,然后弹出下图,选择对应的单片机芯片(双击)     ...

  5. Why is 0[0] syntactically valid in javascript?

    Why is 0[0] syntactically valid in javascript? 原文链接 偶然在一篇帖子中看到了这个问题,所以打算记录一下. var a = 0[0]; console. ...

  6. SharePoint 2013 弹窗效果之URL打开方式(一)

    在SharePoint中想做一个弹出效果其实很简单,仅仅在js中使用SharePoint Modal Dialog, 以下做一个简单的例子:很多情况下我们会通过linkButton弹出一个详细页面,那 ...

  7. winform布局格式

    一.默认布局 ★可以加panel,也可以不加: ★通过鼠标拖动控件的方式,根据自己的想法布局.拖动控件的过程中,会有对齐的线,方便操作: ★也可选中要布局的控件,在工具栏中有对齐工具可供选择,也有调整 ...

  8. operation 多线程

    2.Cocoa Operation 优点:不需要关心线程管理,数据同步的事情.Cocoa Operation 相关的类是 NSOperation ,NSOperationQueue.NSOperati ...

  9. codevs 1078 最小生成树

    题目描述 Description 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助. 约翰已经给他的农场安排了一条高速的网络线路,他想把这 ...

  10. 关于org.openqa.selenium.ElementNotVisibleException

    最近在使用Selenium,编写最简单的百度search脚本,结果使用name来定位元素抛出了如下exception: 在定位百度的输入框,使用By.name()定位失败,但是使用By.id()和By ...