POJ:3258-River Hopscotch
River Hopscotch
Time Limit: 2000MS      Memory Limit: 65536K 
Total Submissions: 17740        Accepted: 7414
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 ≤ M ≤ N).
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).
解题心得:
- 有n块石头排成一列,每个石头距离原点有一个距离,现在要移走m块石头,问这些牛要跳在(n-m) 块石头上,怎么移走石头让牛每次跳的最短距离最大。输入最短的最大距离。
 - 看到这个最短距离最大其实也就想到二分了。首先要明白(n-m)块石头,牛要跳n-m+2次(起点和终点没有石头但是也要跳)。然后二分检查。
 
#include <algorithm>
#include <stdio.h>
#include <cstring>
using namespace std;
const int maxn = 5e5+100;
int pos[maxn],n,m,l,tot;
void init() {
    pos[0] = 0;
    for(int i=1;i<=n;i++)
        scanf("%d",&pos[i]);
    pos[n+1] = l;
    n += 2;
    sort(pos,pos+n);
    tot = n-m;
}
bool checke(int len){
    int cnt = 1,now = pos[0];
    for(int i=1;i<n;i++) {
        if(pos[i] - now >= len) {
            cnt++;
            now = pos[i];
        }
    }
    if(cnt >= tot)
        return true;
    return false;
}
int binary_search() {
    int l = 0,r = 1e9+100;
    while(r - l > 1) {
        int mid = (l + r) / 2;
        if(checke(mid))
            l = mid;
        else
            r = mid;
    }
    return l;
}
int main() {
    while(scanf("%d%d%d",&l,&n,&m) != EOF) {
        init();
        int ans = binary_search();
        printf("%d\n",ans);
    }
    return 0;
}												
											POJ:3258-River Hopscotch的更多相关文章
- 二分搜索 POJ 3258 River Hopscotch
		
题目传送门 /* 二分:搜索距离,判断时距离小于d的石头拿掉 */ #include <cstdio> #include <algorithm> #include <cs ...
 - [ACM] POJ 3258 River Hopscotch (二分,最大化最小值)
		
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6697 Accepted: 2893 D ...
 - POJ 3258 River Hopscotch
		
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11031 Accepted: 4737 ...
 - POJ 3258 River Hopscotch (binarysearch)
		
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5193 Accepted: 2260 Descr ...
 - POJ 3258 River Hopscotch(二分答案)
		
River Hopscotch Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21939 Accepted: 9081 Desc ...
 - poj 3258 River Hopscotch(二分+贪心)
		
题目:http://poj.org/problem?id=3258 题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都 ...
 - POJ 3258 River Hopscotch 二分枚举
		
题目:http://poj.org/problem?id=3258 又A一道,睡觉去了.. #include <stdio.h> #include <algorithm> ]; ...
 - POJ 3258 River Hopscotch(二分法搜索)
		
Description Every year the cows hold an event featuring a peculiar version of hopscotch that involve ...
 - poj 3258 River Hopscotch 题解
		
[题意] 牛要到河对岸,在与河岸垂直的一条线上,河中有N块石头,给定河岸宽度L,以及每一块石头离牛所在河岸的距离, 现在去掉M块石头,要求去掉M块石头后,剩下的石头之间以及石头与河岸的最小距离的最大值 ...
 - POJ 3258 River Hopscotch  (二分法)
		
Description Every year the cows hold an event featuring a peculiar version of hopscotch that involve ...
 
随机推荐
- 资源管理与调度系统-YARN的基本架构与原理
			
资源管理与调度系统-YARN的基本架构与原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 为了能够对集群中的资源进行统一管理和调度,Hadoop2.0引入了数据操作系统YARN. ...
 - System.IO.IOException: The handle is invalid.
			
System.IO.IOException: The handle is invalid. 00022846 11:39:49.098 AM [892] 00022847 11:39:49.098 A ...
 - c#数据类型和表达式
			
一.数据类型 值类型: 1.整数(没有小数) Byte:字节0~255 Char:一个字符 Int 2.有小数 范围大的:double双 小范围:float单 最精确的:十进制decimal 3.bo ...
 - SonarQube代码质量管理平台介绍与搭建
			
前 言 1.SonarQube的介绍 SonarQube是一个管理代码质量的开放平台. 可以从七个维度检测代码质量(为什么要用SonarQube): (1) 复杂度分布(complexity):代码复 ...
 - Laravel 5.5 官方推荐 Nginx 配置学习
			
Laravel 5.5 版本官方放出了 Nginx 服务器的配置,中文文档:服务器配置 Nginx server { listen 80; server_name example.com; root ...
 - API:access_token
			
access_token存在意义: 1.身份验证(一个channel_id一般有0个或1个有效的access_token) 2.限制用户访问服务器数据的有效期 3.限制用户访问权限 access_ ...
 - April 11 2017 Week 15 Tuesday
			
Love is hard to get into, but harder to get out of. 相爱不易,相忘更难. The past are hurt, but I think we can ...
 - veritas.com常用资源汇总
			
NetBackup 8.1.2文档(合集) https://www.veritas.com/support/en_US/article.100044086 NetBackup产品组停止支持生命周期 ...
 - python 爬取猫眼榜单100(二)--多个页面以及多进程
			
#!/usr/bin/env python # -*- coding: utf- -*- # @Author: Dang Kai # @Date: -- :: # @Last Modified tim ...
 - EF Database  first 中,实现 多个表对应一个 实体的 查询
			
1.首先 创建好 数据 库. hobby表 major 表 student 表 外键 关系如下 2. 实现将 数据库 映射到EDM中 视图如下 在VS中 生成了 3个实体类 ,对应的是 数据库中的3 ...