`
hellojyj
  • 浏览: 61463 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

POJ 3258 River Hopscotch

    博客分类:
  • ACM
阅读更多

原题传送门:http://poj.org/problem?id=3258

 

 

River Hopscotch
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 6656   Accepted: 2880

Description

Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully jumping from rock to rock in a river. The excitement takes place on a long, straight river with a rock at the start and another rock at the end, L units away from the start (1 ≤ L ≤ 1,000,000,000). Along the river between the starting and ending rocks, N (0 ≤ N ≤ 50,000) more rocks appear, each at an integral distance Di from the start (0 < Di < L).

To play the game, each cow in turn starts at the starting rock and tries to reach the finish at the ending rock, jumping only from rock to rock. Of course, less agile cows never make it to the final rock, ending up instead in the river.

Farmer John is proud of his cows and watches this event each year. But as time goes by, he tires of watching the timid cows of the other farmers limp across the short distances between rocks placed too closely together. He plans to remove several rocks in order to increase the shortest distance a cow will have to jump to reach the end. He knows he cannot remove the starting and ending rocks, but he calculates that he has enough resources to remove up to M rocks (0 ≤ MN).

FJ wants to know exactly how much he can increase the shortest distance *before* he starts removing the rocks. Help Farmer John determine the greatest possible shortest distance a cow has to jump after removing the optimal set of M rocks.

Input

Line 1: Three space-separated integers: L, N, and M
Lines 2..N+1: Each line contains a single integer indicating how far some rock is away from the starting rock. No two rocks share the same position.

Output

Line 1: A single integer that is the maximum of the shortest distance a cow has to jump after removing M rocks

Sample Input

25 5 2
2
14
11
21
17

Sample Output

4

Hint

Before removing any rocks, the shortest jump was a jump of 2 from 0 (the start) to 2. After removing the rocks at 2 and 14, the shortest required jump is a jump of 4 (from 17 to 21 or from 21 to 25).

Source

 
分析:二分搜索题,每次二分得到mid值的时候去判断下能不能扔掉M块石头。
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 50010
#define t 20000000

int st[MAXN];
int flg[MAXN];
int flag[MAXN];
int l,n,m,mid;

bool isOK()
{
    int p,k;
    p = -1;
    for (int i=1;i<=n;i++)
    {
        while (st[i]-st[p+1]>=mid)
        {
            p++;
        }
        k=p<0?t:min(flg[p],flag[p]);
        flag[i] = k+i-p-1;
        flg[i] = min(flag[i-1],flg[i-1])+1;
    }
    if (flag[n]<=m)
    {
       return true;
    }else{
        return false;
    }


}

int main()
{
    scanf("%d%d%d",&l,&n,&m);
    for (int i=1;i<=n;i++){
        scanf("%d",st+i);
    }
    st[++n]=l;
    sort(st+1,st+n);
    int l=1,r=st[n];
    flg[0]=t; flag[0]=0;
    while (r>=l)
    {
        mid=l+r>>1;
        if (isOK())
        {
            l=mid+1;
        }
        else{
            r=mid-1;
        }
    }
    printf("%d\n",l-1);
    return 0;
}
 
分享到:
评论

相关推荐

    POJ3258-River Hopscotch

    【标题】"POJ3258-River Hopscotch"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这个题目挑战参赛者的算法设计和实现能力,通常涉及计算机科学中的数据结构和算法知识。 【描述】...

    poj 3050 Hopscotch.md

    poj 3050 Hopscotch.md

    POJ算法题目分类

    * 计算方法:计算方法是指解决问题的计算方法算法,如 poj3273、poj3258、poj1905、poj3122。 七、计算几何学 计算几何学是指解决问题的计算几何学算法,包括几何公式、叉积和点积的运用、多边型的简单算法和...

    poj题目分类

    * 二分法求解单调函数相关知识:例如 poj3273、poj3258、poj1905、poj3122。 计算几何学 1. 几何公式。 2. 叉积和点积的运用:例如 poj2031、poj1039。 3. 多边型的简单算法(求面积)和相关判定(点在多边型内,...

    POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类

    - **例题**:poj3273, poj3258, poj1905, poj3122 - **解释**:概率统计问题通常涉及计算某个事件发生的概率。 ### 五、数值计算 #### 1. 数值分析 - **例题**:未列出具体题目 - **解释**:数值分析涉及数值计算...

    poj各种分类

    如二分法用于逼近单调函数的根,提高算法效率,见poj3273和poj3258。 ### 七、计算几何学 #### 几何公式与运算 叉积和点积用于判断线段交叉、计算点到线段距离等,如poj2031。 #### 多边形算法 包括求多边形面积...

    POJ 分类题目 txt文件

    例如,题目poj3273和poj3258就涉及到几何知识。 ### 8. 编程技巧 编程技巧部分强调代码的编写规范、效率优化和调试技巧。例如,C++标准模板库(STL)的使用、自定义数据结构的设计等。掌握这些技巧有助于提高代码...

    POJ.rar_poj java_poj1048

    【标题】"POJ.rar_poj java_poj1048" 涉及的知识点主要围绕编程竞赛中的“约瑟夫环”问题,这里是一个加强版,使用Java语言进行解决。 【描述】"POJ1048,加强版的约瑟夫问题 难度中等" 提示我们,这个问题是编程...

    POJ_3131.zip_POJ 八数码_poj

    标题中的“POJ_3131.zip_POJ 八数码_poj”指的是一个与编程竞赛网站POJ(Problem Set Algorithm)相关的项目,具体是针对3131号问题的解决方案,该问题涉及到了八数码游戏。八数码游戏,又称滑动拼图,是一个经典的...

    acm训练计划(poj的题)

    - (poj3273, poj3258, poj1905, poj3122):研究两个或多个参与者之间的决策过程。 ### 六、数值计算 1. **精度控制**: - 如何处理浮点数的精度问题。 2. **高精度运算**: - 处理大数的加减乘除等操作。 3. ...

    POJ1159-Palindrome

    【标题】"POJ1159-Palindrome" 是北京大学在线编程平台POJ上的一道编程题目。这道题目主要考察的是字符串处理和回文判断的知识点。 【描述】"北大POJ1159-Palindrome 解题报告+AC代码" 暗示了解决这道问题的方法和...

    POJ2002-Squares

    【标题】"POJ2002-Squares"是一个经典的计算机编程题目,源自北京大学的在线判题系统(POJ,即PKU Online Judge)。这个题目主要涉及到算法设计和实现,尤其是数学和动态规划方面的知识。 【描述】"解题报告+AC代码...

    poj训练计划.doc

    根据给定的文件信息,我们可以总结出一份详细的IT知识训练计划,主要针对编程竞赛和算法学习,特别是聚焦于POJ(Problem Online Judge)平台上的题目训练。这份计划分为两个阶段,初级阶段和中级阶段,共计涉及了165...

    jihe.rar_2289_POJ 3714_poj3714_poj3714 Ra_visual c

    标题中的"jihe.rar_2289_POJ 3714_poj3714_poj3714 Ra_visual c" 提到了一个压缩文件,可能包含有关编程竞赛或算法解决的资源,特别是与POJ(Problem On Judge)平台上的问题3714相关的。"Ra_visual c"可能指的是...

    POJ1837-Balance

    【标题】"POJ1837-Balance"是一个在线编程竞赛题目,源自著名的编程练习平台POJ(Programming Online Judge)。这个题目旨在测试参赛者的算法设计和实现能力,特别是处理平衡问题的技巧。 【描述】"解题报告+AC代码...

    poj 3414解题报告

    poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告

    经典 的POJ 分类

    - POJ 3273、POJ 3258:几何对象之间的关系。 - POJ 1905、POJ 3122:复杂的几何计算问题。 ### 字符串处理 #### 后缀数组 - **题目示例**: - POJ 2031、POJ 1039:后缀数组的构建与应用。 #### 字典树 ...

    POJ1201-Intervals

    【标题】"POJ1201-Intervals" 是北京大学在线编程平台POJ上的一道题目,这道题目主要涉及计算机科学中的算法设计与分析,尤其是数据结构和时间复杂度优化方面的知识。 【描述】"北大POJ1201-Intervals 解题报告+AC...

    POJ1010-STAMPS

    【标题】"POJ1010-STAMPS"是一个编程题目,来源于北京大学的在线判题系统POJ(Problem Set of Peking University),这是一处训练程序员算法技能和编程能力的平台。该题目旨在考察参赛者对动态规划或贪心算法的理解...

Global site tag (gtag.js) - Google Analytics