题目链接:https://vjudge.net/problem/POJ-3258

题意:

有一条河长为L,河中间有n块石头,算上开始和结尾一共n+2个,现在问去掉m块石头,问最短距离中的最大值是多少?

分析:

二分寻找一个值,使得可以移除m个石头。

code:

// #include <bits/stdc++.h>
#include <cstdio>
#include <cmath>
#include <algorithm>using namespace std;
const int MAXN = 5e4 + 7;
const int INF = 0X3F3F3F3F; int a[MAXN];    // 存石头的位置int main()
{int l, n, m;while(scanf("%d %d %d", &l, &n, &m) != EOF){int low = l;    // 二分左右边界int high = l;a[0] = 0;a[n+1] = l;for(int i=1; i<=n; i++){scanf("%d", &a[i]);low = min(low, a[i] - a[i-1]);  // 更新左边界,找到起始的最小左边界}low = min(low, a[n+1] - a[n]);sort(a, a+n+2);     // 输入无序,排为升序while(low <= high){int mid = (low+high) / 2;int sum = 0;int cnt = 0;int i = 1;while(i <= n+1)  // 从第一个点遍历到最后一个点,终点{sum += a[i] - a[i-1];  // 两块石头之间的距离,不一定是连续的if(sum <= mid){cnt ++;i++;}else{sum = 0;i++;}}// cnt == m, 说明当前mid的值已经可以移除m个石头// 但是当前mid还不是可能最小值,有可能mid+1也符合条件//  我们找的是最小值中的最大值,而不是最小值中的最小值,所以左边界应该+1if(cnt <= m)   low = mid + 1;elsehigh = mid - 1;}printf("%d\n", low);}return 0;
}

POJ3258 River Hopscotch(二分)相关推荐

  1. poj-3258 River Hopscotch (二分)

    题意:奶牛过河游戏,河上有N块石头,河的总宽度为L,一位农夫感觉每个石头之间的间距太小了,所以他想通过移除M块石头来使最小的间距最大化.求最大化后的最小距离(姑且是这个题意吧,英语菜) 思路:通过二分 ...

  2. 【POJ3258】River Hopscotch 二分答案,贪心check

    题意:第一行knm,有n+2个石头在数轴上(k是第n+2个石头离第一个的距离),要删掉m个,使两两间距的最小值最大,并求这个值. 题解:排序一下,然后扫一遍贪心决定删哪些. #include < ...

  3. poj 3258 River Hopscotch 二分答案

    题目地址: http://poj.org/problem?id=3258 题目思路: 首先,如果只减少一部,那么一定要干掉最短的那段距离(一旦不消灭,最小的还是它,并没有达到使最小值取最大的理想情况) ...

  4. poj 3258 River Hopscotch 二分

    1 /** 2 大意:给定n个点,删除其中的m个点,其中两点之间距离最小的最大值 3 思路: 二分最小值的最大值---〉t,若有距离小于t,则可以将前面的节点删除:若节点大于t,则继续往下查看 4 若 ...

  5. poj3258 River Hopscotch (二分搜索,考虑最大值最小问题)

    每年奶牛们都要举办各种特殊版本的跳房子比赛,包括在河里从一块岩石跳到另一块岩石.这项激动人心的活动在一条长长的笔直河道中进行,在起点和距离起点 L 远的终点各有一块岩石 (1 ≤ L ≤ 10^9). ...

  6. POJ 3258 River Hopscotch 二分

    题意:奶牛们喜欢在河里的石头上玩跳房子游戏,每次从一个石头跳到另一个石头上.现在知道起点的石头,终点的石头,以及终点石头到起点石头的距离L.又知道起点-终点之间还有N个石头,每个石头到起点的距离记为r ...

  7. bzoj 1650: [Usaco2006 Dec]River Hopscotch 跳石子(二分)

    1650: [Usaco2006 Dec]River Hopscotch 跳石子 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 721  Solved: ...

  8. River Hopscotch问题(二分)

    又是一个卡了我好久好久好久的二分题 我真的不会二分啊,有没有大佬可以给我讲讲 我就是个憨憨 题目链接River Hopscotch 题目描述: Every year the cows hold an ...

  9. POJ 3258 River Hopscotch 经典二分

    点击打开链接 River Hopscotch Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6189   Accepted: ...

最新文章

  1. Extensible Messaging and Presence Protocol (XMPP): Core
  2. js中计算中文长度方法
  3. 淘淘商城 本地仓库配置和仓库jar包下载
  4. tp5 日期范围查询_VB实战应用 | 如何巧妙解决日期范围查询问题
  5. 基于xlua和mvvm的unity框架
  6. 奥林匹克数学竞赛教练员汇编,最牛奥数资料全集!
  7. 文件的读操作 c# 1614526130
  8. 13.SpringMVC核心技术-异常处理
  9. keil软件仿真时,程序不能正常运行解决方法
  10. C++ string 用法详解(转)
  11. THE PRESENT (礼物)
  12. 为什么负数的补码是取反加一
  13. C 语言 结构类型 结构
  14. windows服务器系统和专业版差别,Win10专业版和企业版哪个好?教你区分win10企业版和专业版...
  15. 2021年十佳返利优惠券平台排名如下
  16. RAID磁盘阵列与配置
  17. 电子书格式转换方法集锦
  18. “中国无人车第一案”出现神转折:景驰为何“投诚”百度?
  19. 阿里云购买云服务器流程及注意事项(新手用户必看图文教程)
  20. [经验分享] 覃超线上直播课 如何快速搞定秋招算法面试

热门文章

  1. 高校教师工资管理系统/C语言课设
  2. beanstalkd java使用_PHP使用Beanstalkd实例
  3. 作为女程序的我以后再也不想和产品经理说话了!!!
  4. 电梯调度算法简单实现(c语言)
  5. 1088 三人行 (20 分)(附详细注释,逻辑分析)
  6. 结构力学-图乘法-梯形公式【笔记】
  7. 大数据必学Java基础(一百一十五):Session域监听器
  8. 2017年web前端职位_2017年最热门的5大IT职位
  9. slurm作业调度系统
  10. 一篇文章带你学会MySQL数据库的基本管理