Java解P2678 [NOIP2015 提高组] 跳石头,有图有注释,通俗易懂
01.题目及链接
题目链接:https://www.luogu.com.cn/problem/P2678
02.解题思路
对两个石头之间的最短距离mid进行二分枚举,初始时left=0,right=起点到终点的距离,
- mid=(l=r)>>1,当移除石头的数量大于n时,right=mid-1
- mid=(l=r)>>1,当移除石头的数量大于n时,left=mid
- 最终mid就是石头之间的最短距离
03.具体实现
具体代码
public class Main {static int[] data;static int l,n,m;public static void main(String[] args) {Scanner in=new Scanner(System.in);l=in.nextInt();//l:起点到终点的距离n=in.nextInt();//n:起点到终点的岩石数m=in.nextInt();//m:移走的石头数data=new int[n+1];for (int i = 1; i <= n; i++) {data[i]=in.nextInt();}int res=0;int left=1,right=l;while (left<=right) {int mid=(left+right)>>1;//mid是石头的之间的最小距离(两个石头之间的距离>=mid)if(judge(mid)) {res=mid;left=mid+1;}else {right=mid-1;}}System.out.println(res);}//当移除石头数量<=m时,返回trueprivate static boolean judge(int mid) {//num为长度为mid时最终移除的石头的数量 now可以看作当前站在第几个石头上 i可以看作是前面的石头int num=0,i=0,now=0;while (i<n) {i++;if(data[i]-data[now]<mid) {//前面石头的距离与当前石头的距离<mid移除num++;}else {now=i;}}return num<=m;}}
DeBug分析
04.深入练习
- https://www.luogu.com.cn/problem/CF371C
- https://www.luogu.com.cn/problem/P1314
05.二分套路总结
https://blog.csdn.net/qq_46237746/article/details/123813308
Java解P2678 [NOIP2015 提高组] 跳石头,有图有注释,通俗易懂相关推荐
- P2678 [NOIP2015 提高组] 跳石头
P2678 [NOIP2015 提高组] 跳石头 题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选 ...
- 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头
[题目链接] ybt 1890:[15NOIP提高组]跳石头 洛谷 P2678 [NOIP2015 提高组] 跳石头 ybt 1247:河中跳房子 OpenJudge NOI 1.11 10:河中跳房 ...
- 【题解】P2678 [NOIP2015 提高组] 跳石头
题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...
- 洛谷P2678 [NOIP2015 提高组] 跳石头
传送门:https://www.luogu.com.cn/problem/P2678 非常同意一个观点:二分答案由二分区间和judge函数构成 二分答案,顾名思义,就是找到答案的范围区间,然后在这个区 ...
- 2015 提高组 跳石头--二分答案
题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...
- 洛谷-神奇的幻方-NOIP2015提高组复赛
题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,--,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...
- P2615 [NOIP2015 提高组] 神奇的幻方
题目描述 幻方是一种很神奇的 N\times NN×N 矩阵:它由数字 1,2,3,\cdots \cdots ,N \times N1,2,3,⋯⋯,N×N 构成,且每行.每列及两条对角线上的数字之 ...
- 【NOIP2015提高组】信息传递
题目背景 NOIP2015 提高组 Day1 T2 题目描述 有 n 个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编 ...
- [NOIP2015 提高组] 神奇的幻方 ——C++
[NOIP2015 提高组] 神奇的幻方 题目描述 幻方是一种很神奇的 N∗NN*NN∗N 矩阵:它由数字 1,2,3,⋯⋯ ,N×N1,2,3,\cdots \cdots ,N \times N1, ...
最新文章
- Jmeter 使用自定义变量
- 角色权限(Role)和系统权限(System)的几个澄清实验
- 1028: 在霍格沃茨找零钱
- Xshell 连接本地的Linux 系统,提示:Could not connect to '192.168.182.128' (port 23): Connection failed
- 使用Chrome的inspect element注意事项
- 苹果内部文件曝光:iPhone SE3以外,还有大惊喜...
- select weui 动态加载数据_浪尖以案例聊聊spark3的动态分区裁剪
- 金融科技火热无比时,支付场景下的风控可以怎么做?(下)
- 中间件配置文件-redis
- iOS开发之NSURLSession/NSURLConnection HTTP load failed 的解决办法
- 算法 -- 四种方法获取的最长“回文串”,并对时间复杂进行分析对比PHP
- yii验证在一个数组内_PHP实现一个轻量级容器
- 使用Python进行局域网传输文件两种方法
- word批量设置图片大小和对齐,使用宏定义
- 用Python爬取拉钩网招聘职位信息
- 摆动序列算法C语言,376 摆动序列 leetcode
- 2018年8月win10教育版education最新激活密钥
- 磨金石教育分享||想转行学习插画,应该怎么做,需要什么基础?
- 启动计算机引导windows10,Win10系统引导项丢失了怎么办?修复Win10系统启动引导项的方法...
- matlab求解多自由度振动系统,【2017年整理】1-《机械振动基础》大作业,基于matlab的多自由度振动.doc...