又是一个卡了我好久好久好久的二分题
我真的不会二分啊,有没有大佬可以给我讲讲
我就是个憨憨

题目链接River Hopscotch
题目描述:
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.

输入要求
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.

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

这个题大体意思就是在河中共有n块石头,要求在移走m块石头后,所有石头的最小值最大。

注意:

1.题目输入是多组样例,要使用while(scanf(“%d %d %d”,&l,&n,&m)!=EOF)形式。我就是瞎看不见最后一行的要求嘤嘤嘤

2.输入的石头是距离河岸的长度,要先对数据排序才能进行后续判断。

3.对于二分中间元素的判断:初始low=0,high=河的长度(每一次循环都要更新啊!!!不要像我一样傻乎乎不管low),当两块石头的距离小于中间值时,就移走此时这块,并记录移走石头的数目,当大于中间值时,更新前一块石头的位置,(一定要更新啊!!!)当移走数目大于要求数目时,说明此时间隔取大了,更换high的值。

代码实现

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long int a[50010],l,m,n;
int main()
{long long int i,j,low=0,high,mid;while(scanf("%lld %lld %lld",&l,&n,&m)!=EOF){a[0]=0;for(i=1;i<=n;i++){scanf("%d",&a[i]);} high=l;low=0; sort(a,a+n+1);while(low<=high){mid=(low+high)/2;int num=0,last=0;for(i=1;i<=n;i++){if(a[i]-last<mid) num++;else last=a[i];}if(num<=m) low=mid+1;else high=mid-1;}printf("%d\n",high);}return 0;}

River Hopscotch问题(二分)相关推荐

  1. POJ 3258 River Hopscotch 经典二分

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

  2. POJ 3258 -- River Hopscotch(二分)

    题目链接 Description Every year the cows hold an event featuring a peculiar version of hopscotch that in ...

  3. POJ 3258 River Hopscotch(二分查找答案)

    一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...

  4. poj 3258 River Hopscotch 【二分】

    题目真是不好读,大意例如以下(知道题意就非常好解了) 大致题意: 一条河长度为 L,河的起点(Start)和终点(End)分别有2块石头,S到E的距离就是L. 河中有n块石头,每块石头到S都有唯一的距 ...

  5. poj-3258 River Hopscotch (二分)

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

  6. POJ3258 River Hopscotch(二分)

    题目链接:https://vjudge.net/problem/POJ-3258 题意: 有一条河长为L,河中间有n块石头,算上开始和结尾一共n+2个,现在问去掉m块石头,问最短距离中的最大值是多少? ...

  7. POJ 3258 River Hopscotch (二分)

    题目地址:POJ 3258 水题.二分距离,判断是否可行.需要注意的是最后一个,因为最后一个是没法移除的,所以还要倒着判断一下. 代码如下: #include <iostream> #in ...

  8. poj 3258:River Hopscotch(二分)

    题目链接 L为N+2块石子中最右边石子位置,0最左,M为可移除块数,求移除后相邻石子可达到的最大距离. #include<iostream> #include<cstdio> ...

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

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

最新文章

  1. 码云新建仓库,与本地仓库关联
  2. 谷歌、苹果等大佬亲自戳穿自动驾驶完美童话,技术、场景、安全牢笼实难突围!...
  3. java商品展示页面代码_java学习(十四)实现商品的展示、curd以及分页展示
  4. tomcat部署web應用時涉及到的基本概念
  5. word中插入emf,svg图像的注意事项
  6. 表单提交复选框(checkbox)注意事项
  7. Qt 人类可读大小 quint64字节转可读字符串 “1.1 GB“
  8. 本科毕业查重过程分享与经验
  9. 个人学习计划(计算机专业),大学生个人学习计划范文
  10. python中将一个numpy数组转为str,写入文件时会自动换行
  11. BGP 路由聚合(Huawei设备)
  12. android 设置来电铃声
  13. 中国企业管理软件之殇
  14. RT-Thread Studio 字体放大 缩小快捷键
  15. c语言调用calculate函数,关于c语言中int calculate函数求解。谢谢
  16. svn造成桌面图标显示问号的处理办法
  17. 计算机教师师徒结对协议,学期信息技术师徒结对总结
  18. matlab去除图像背景,从图像中移除背景(首选MATLAB、Java或Python)
  19. 谷歌牵手265解密:双方将合作推广Adsence
  20. Linux系统管理学习计划

热门文章

  1. 数据结构—链表的前插法与后插法
  2. 苹果手机下不是a标签却有了a标签的样式的解决方案
  3. 美创科技勒索病毒“零信任”防护和数据安全治理体系的探索实践
  4. C语言strcpy、strncpy函数是否会复制‘\0‘结束符
  5. session共享问题
  6. 刚毕业,简历上的项目经验怎么写
  7. [转载]研究生的忌于记
  8. 实战!最受欢迎的企业级开源监控系统 Zabbix + Prometheus !
  9. 国产银河麒麟服务器vsftp匿名用户本地用户的一般设置
  10. CRect 类基础