题目翻译
二分法(其实两个单词的意思分别是河,跳格子游戏,至于为啥翻译成二分法- -只能说英语博大精深啊)
奶牛每年举办一场有特色的跳格子游戏(很明显题目翻译错误)涉及到在河里从一块岩石跳到另一块岩石上,这个令人兴奋的游戏发生在一条又长又直的河中,从河的开始到结尾有一些石头,开始有一个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. 无软驱加载raid驱动安装windows2003及其他微软操作系统

    [转载]http://blog.zol.com.cn/2650/article_2649199.html [另一篇]http://www.blue1000.com/bkhtml/c159/2013-0 ...

  2. Linq 调试

    void Main() { var MyMonitor = new Devart.Data.Oracle.OracleMonitor(); MyMonitor.IsActive = true; var ...

  3. Kettle的集群排序 2——(基于Windows)

    5.使用kettle集群模式对相关的数据进行排序 既然,基于Carte服务程序所搭建的集群已经在Spoon中设定好了, 可以首先,先来启动四个节点: "以管理员身份运行"打开 四个 ...

  4. 利用Graphviz 画结构图[转]

    转自:http://www.cnblogs.com/sld666666/archive/2010/06/25/1765510.html 利用Graphviz 画结构图   1. Graphviz介绍 ...

  5. 系统重装c盘后,mysql重新设置

    之前我的mysql装在d盘,重装了系统后,虽然只格式化了c盘,但mysql还是不能用了.我网上找了找.修改了一下配置. 1.首先设置环境变量,编辑path,在后面添加上mysql的安装路径 : 2.之 ...

  6. For Me ...

    一直有做博客的打算,但是这也看不上,那也看不上. 总想着做一个personal blog,界面,风格全由自己设计. 可时间上总是不充裕的. 可技术上总是欠火候的. 可内容上总是待斟酌的. 于是时间被我 ...

  7. iOS 8 Handoff 开发指南

    (原文:Working with Handoff in iOS 8 作者:Gabriel Theodoropoulos 译者:半圆圆) 我想用下面这一个美妙的场景来开始这篇教程:假象一下你正在Mac上 ...

  8. 2014年10月16号--for语句实例

    Console.WriteLine("一对小兔一个月之后长成大兔,再过一个月后生新的一对兔子,且两年之后有多少对兔子,就是三兔子幼兔,小兔,成兔"); Console.WriteL ...

  9. 除法(Division ,UVA 725)-ACM集训

    参考:http://www.cnblogs.com/xiaobaibuhei/p/3301110.html 算法学到很弱,连这么简单个问题都难到我了.但我偏不信这个邪,终于做出来了.不过,是参照别人的 ...

  10. YII 小部件 解决多选按钮和单选按钮不在同一水平上 'separator'=>'&nbsp;'

    主要是添加separator属性(这里)$hoddy,$sex在控制器里面定义的数组,然后render传过来的 <td>          <?php echo $form-> ...