哈理工OJ-1584-青蛙过河【贪心+二分】
青蛙王国一年一度的游戏又开始了,这个游戏要求青蛙必须跳过河。河的宽度是 L 。河里有n块石头,这n块石头从河的一边笔直的连到另一边。青蛙只能踩着石头过河,如果它们掉到水里,将被淘汰出局。游戏规定青蛙最多跳m次。现在青蛙想要知道如果在这m步内跳到岸的那边,它一步最长需要跳多长。
Input
输入包括多组测试结果。
第一行输入三个数字L(1<= L <= 1000 000 000),n(0<= n <= 500000),m(1<= m <= n+1)。
接下来一行有n个用空格隔开的整数,表示每块石头到跳跃起点的距离,两块石头不可能同时出现在一个地方。
Output
对于每次测试,输出一个整数表示青蛙至少应该有的最大的能力,即为一步最多能跳多长,每步实际跳的长度一定小于等于这个最小的最大能力。
Sample Input
6 1 2
2
25 3 3
11 2 18
Sample Output
4
11
#include<bits/stdc++.h>
using namespace std;
int a[500005];
int L,n,m;
int solve(int x)
{int s=0,step=0;for(int i=1;i<n+1;i++){if(x>=a[i]-a[s]&&x<a[i+1]-a[s])//贪心:能跳这次跳不到下一个,说明是这次跳的最大的{s=i;step++;}}step++;//最后一个石头跳到岸上加一步if(step>m)return 0;elsereturn 1;
}
int main()
{while(scanf("%d%d%d",&L,&n,&m)!=EOF){memset(a,0,sizeof(a));for(int i=1;i<=n;i++){scanf("%d",&a[i]);}a[0]=0;a[n+1]=L;sort(a,a+n+2);int Max=-1;for(int i=1;i<=n+1;i++){if(Max<a[i]-a[i-1]){Max=a[i]-a[i-1];}}int l=Max,r=L;while(r>=l)//二分{int mid=(r+l)>>1;if(solve(mid)){r=mid-1;}elsel=mid+1;}printf("%d\n",l);}
}
哈理工OJ-1584-青蛙过河【贪心+二分】相关推荐
- hrbust 1584 青蛙过河(二分)
青蛙过河 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 68(38 users) Total Accepted: 36(32 user ...
- 哈理工OJ 1186 青蛙过河 (DP问题)
题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1186 青蛙过河 Time ...
- hrbust 哈理工oj 1588 神医【贪心】
神医 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 140(33 users) Total Accepted: 43(31 users ...
- 哈理工OJ 1192 追逐(贪心算法)
追逐 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 140(68 users) Total Accepted: 75(64 users ...
- 青蛙过河(二分+并查集)
青蛙过河 来回x次,也就是从起点一共2x个青蛙走一遍到终点 用一个数组记录每次送多少个青蛙由i–>j 具体看acwing解析 #include <bits/stdc++.h> #de ...
- nyoj-619 青蛙过河
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=619 题目大意:就是有一条宽为L的河,河上有n个石头,每个石头与河对岸的距离为a[i],然 ...
- nyoj 691 青蛙过河
题目链接: http://acm.nyist.net/JudgeOnline/problem.php?pid=619 /// 这道题好像是青蛙过河,我也没有翻译,因为之前做过一个这样的题,就是一条河有 ...
- java青蛙过河打字_趣味算法——青蛙过河(JAVA)
青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...
- 2021.05.05青蛙过河
2021.05.05青蛙过河 (题目来源:https://leetcode-cn.com/problems/frog-jump/) 题目描述 一只青蛙想要过河. 假定河流被等分为若干个单元格,并且在每 ...
- Python解题 - NOIP2005 青蛙过河
本题解经过热心网友的指正,已经更新,问哥为之前的武断向大家道歉.此题解仅供参考,感谢大家的监督与建议. 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很 ...
最新文章
- 把计算机网络关闭啦怎么打开,我在笔记本电脑里的“打开或关闭系统图标”中关闭了“网络系统图标”,哪么怎样做才能打开...
- 神经网络理论基础及Python实现
- 批改网作文提交时分析不出来_小学生作文写作从哪些方面提高呢?
- C语言库函数的实战之一
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
- html5怎么改为vue_【面试需要Vue全家桶】一文带你看透Vue前端路由
- YII2操作mongodb笔记
- [实践系列]Promises/A+规范
- github private链接访问_如何将Jenkins链接到私有Github存储库?
- npm以及gulp相关操作
- php手机注册和微信登录统一,微信第三方登录账户统一的问题
- 计算机组成原理第二版知识大纲
- Tab控件中滚动条的设置
- layui让当前页面刷新_layui点击按钮页面会自动刷新的解决方案
- 年会抽奖系统3d效果html,HTML抽奖系统 开源版,希望我们共同学习!
- python怎么关闭csv_Python2.7.1:如何打开、编辑和关闭CSV fi
- 推荐参加国际会议海报制作(poster)的Latex模板
- 如何用chrome浏览器打开swf文件
- 邓侃:中国首个全过程智能诊疗系统,全方位披露技术核心和商业模式
- 关于Git 的管理凭据操作
热门文章
- RGBA 转 RGB
- 推荐WebSocket、Https移动端(iOS)抓包工具mitmproxy
- 如何让人形机器人“行稳致远”?这篇顶级期刊的论文提出了新方法
- Thread 类的基本用法(附详细代码),通俗易懂。
- 今日头条火山小视频消重
- 数学基础task07 多元微分学
- Docker容器日常操作命令
- Android4.4以后第三方应用无法删除短信的解决方案
- lisp写标高线_属性块形式的标高标注程序! - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
- 2016年3月4日。