题目翻译
二分法(其实两个单词的意思分别是河,跳格子游戏,至于为啥翻译成二分法- -只能说英语博大精深啊)
奶牛每年举办一场有特色的跳格子游戏(很明显题目翻译错误)涉及到在河里从一块岩石跳到另一块岩石上,这个令人兴奋的游戏发生在一条又长又直的河中,从河的开始到结尾有一些石头,开始有一个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. Android 学习手札(一) 应用程序架构

    1.资源列表 Android支持的资源列表 目   录 资源类型 描述 res/anim  XML  该目录用于存放帧(frame).动画或补间(tweened)动画文件 res/drawable   ...

  2. 不学就吃亏的underscorejs类库学习示例 ——(集合篇)

    underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...

  3. Javascript参数传递中值和引用的一种理解

    值(value)和引用(reference)是各种编程语言老生常谈的话题,js也不例外. 我将剖析一个例子的实际运行过程,跟大家分享我对js参数传递中的值和引用的理解. 参考官网数据类型的两种分类,本 ...

  4. aix7安装was7、打补丁、更改访问端口、手动启动was、配置was7、部署项目

    1:准备工作  首先了解下我们下面即将用到的aix命令,以及安装包.补丁安装工具.补丁 was7的安装包以及补丁工具都是压缩包形式并且以.tar.gz结尾的 安装包在800MB左右,通常为****_w ...

  5. JQUERY 键盘事件

    一 一.首先需要知道的是: 1.keydown()keydown 事件会在键盘按下时触发. 2.keypress()keypress 事件会在敲击按键时触发,我们可以理解为按下并抬起同一个按键. 3. ...

  6. MOS管(场效应管)导通条件

    场效应管的导通与截止由栅源电压来控制,对于增强型场效应管来说,N沟道的管子加正向电压即导通,P沟道的管子则加反向电压.一般2V-4V就可以了.    但是,场效应管分为增强型(常开型)和耗尽型(常闭型 ...

  7. C#【数据库】 Access类

    using System; using System.Data; using System.Data.OleDb; namespace AccessDb { /**//// <summary&g ...

  8. ArcGis Engine 读取自定义prj坐标系文件时,中文名称乱码

    今天测试时发现使用ArcMap自定义一个坐标系,将坐标系名称设置为中文,基准面名称选择为自定义后,然后保存成prj文件. 在自己的程序中读取该prj文件后,发现ISpatialReference 对象 ...

  9. 简单工厂模式的C++实现

    用简单工厂模式实现一个计算器类: #include <iostream> #include <string> using namespace std; class Operat ...

  10. 关于Unity导出的Android应用在小米、联想等机型上崩溃的问题

    应用在三星手机上运行没有出现问题,但在小米和联想手机上会崩溃.这个问题在刚开始时一直查不到问题所在,后来发现是因为Android清单文件中声明的权限出现了重复,去掉了重复的权限之后,就没有出现崩溃的情 ...