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

    自定义nagios监控命令check_disk_data,首先在nagios服务端command.cfg定义了#'check_disk_data' command definitiondefine c ...

  2. os项目icon和default 等相关图标命名规则和大小设置

    最新的参考apple官网地址:https://developer.apple.com/library/ios/qa/qa1686/_index.html,网页下面有详细的使用方法(ios7以后的) 转 ...

  3. Vijos1386 IOI2007 矿工配餐 动态规划

    感觉早些年IOI的题都不难啊,也就NOIp难度……现在貌似变难了 状态用dp[n][a1][b1][a2][b2]表示 n表示处理到前n个餐车 第一组矿工得到的最近一种食物用a1表示,a1的上一种食物 ...

  4. 谈一下关于C++函数包装问题

    在C++中,我们经常遇到在某个特定的时刻,需要将函数进行包装调用,尤其是当我们需要将不同签名的函数放到同一个集合时,由于函数签名不一致导致我们不能直接将各式各样的函数指针放到诸如list这样的集合中, ...

  5. js 之 复制一段代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 《Python 二三事》——python学习必看(转载)

        面向初学者介绍Python相关的一些工具,以及可能遇到的常见问题. 原文出处 原文作者:八八年出生的男性,互联网上常用id是 jagttt .目前正从事 IT 行业的工作.业余爱好是动漫游加电 ...

  7. java枚举小结

    如何定义一个枚举类? //定义了4个等级 enum Level{ A,B,C,D } 枚举类的实质: class Level{ public static final Level A = new Le ...

  8. C语言中的字节对齐以及其相关处理

    首先,我们来了解下一些基本原理: 一.什么是字节对齐一个基本类型的变量在内存中占用n个字节,则该变量的起始地址必须能够被n整除,即: 存放起始地址 % n = 0,那么,就成该变量是字节对齐的;对于结 ...

  9. 转:gpio_direction_output 与 gpio_set_value

    gpio_set_value(port_num,0/1) 一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它就管不了! 而gpio_direction_output (por ...

  10. 工作总结:MFC自写排序算法(升序)

    最近一个需求里面需要实IP升序排序,用了qsort,结果是内部排序,甚至感觉排序结果不可预测性,于是自己写了一个外部排序. 需求如下:一个指针里面有N条记录,每条记录包含:IP,偏移地址,保留位,均占 ...