1、问题描述

【问题描述】
小明公司的办公区有一条长长的走廊,由N 个方格区域组成。
走廊内部署了 《台扫地机器人,其中第i台在第A;个方格区域中。
己知扫地机器人每分钟可以移动到左右相邻的方格中,并将该区域清扫干
净。
请你编写一个程序,计算每台机器人的清扫路线,使得
1.它们最终都返回出发方格,
2. 每个方格区域都至少被清扫一遍,
3.从机器人开始行动到最后一台机器人归位花费的时间最少。
注意多台机器人可以同时清扫同一方块区域,它们不会互相影响。
输出最少花费的时间。
在上图所示的例子中,最少花费时间是 6。第一台路线:2-1-2-3-4-3-2,清
扫了1、2、3、4号区域。第二台路线 5-6-7-6-5,清扫了5、6、7。第三台路线
10-9-8-9-10,清扫了8、9和10。

【输入格式】
第一行包含两个整数 N和人。
接下来下行,每行一个整数 A;。
【输出格式】
输出一个整数表示答案。
【样例输入】
10 3
5
2
10
【样例输出】
6

2、代码实现

import java.util.Arrays;
import java.util.Scanner;public class Main {static int[] position;static int N;static int K;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);//N个区域N = scanner.nextInt();//K台机器人K = scanner.nextInt();//保存这些机器人的位置position = new int[K];for(int i = 0;i < K;i++) {position[i] = scanner.nextInt();}//排序Arrays.sort(position);//二分查找int left = 0;int right = N;int mid = 0;while(left <= right) {mid = (left + right) >> 1;if(check(mid)) {right = mid - 1;}else {left = mid + 1;}}System.out.println((mid - 1) * 2);}public static boolean check(int m) {//已扫描过的走廊int sum = 0;//遍历这些机器人,开始打扫走廊for(int i = 0;i < K;i++) {//如果当前机器人可以打扫到走廊的左边界if(position[i] - m <= sum) {//如果当前机器人已经在打扫的范围内if(position[i] <= sum) {//以当前机器人的位置为起点,向右边扩大 m - 1 个格子sum = position[i] + m - 1;}else {//向后扩大 m 个格子sum += m;}}else {//如果程序执行到此处,说明当前机器人不足以打扫到左边界// m 太小,return false;}}//只有把全部的格子打扫过才可以,尽可能缩小mreturn sum >= N;}
}

蓝桥杯—扫地机器人—二分搜索相关推荐

  1. 2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人

    2019年第十届蓝桥杯 - 省赛 - C/C++研究生组 - G. 扫地机器人 Ideas 首先我们根据数学常识可以知道,当每个机器人清扫的范围差不多时,最好都是 N / K,花的时间应该是最少的. ...

  2. 蓝桥杯2019试题J扫地机器人

    题目描述: 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的 ...

  3. 蓝桥杯官网 试题 PREV-109 历届真题 扫地机器人【第十届】【省赛】【研究生组】【C++】【Java】【Python】三种解法

    为帮助大家能在6月18日的比赛中有一个更好的成绩,我会将蓝桥杯官网上的历届决赛题目的四类语言题解都发出来.希望能对大家的成绩有所帮助. 今年的最大目标就是能为[一亿技术人]创造更高的价值. 资源限制 ...

  4. [蓝桥杯][2019年第十届真题]扫地机器人(二分+贪心)

    题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的方 ...

  5. 扫地机器人(蓝桥杯C/C++)

    题目描述 小明公司的办公区有一条长长的走廊,由 NN 个方格区域组成,如下图所示. 走廊内部署了 KK 台扫地机器人,其中第 ii 台在第 A_iAi​ 个方格区域中.已知扫地机器人每分钟可以移动到左 ...

  6. 二分搜索,POJ2456,NYOJ 914, 区间移位-蓝桥杯-历届试题

    二分搜索是不断缩减可能解的范围来得到最优解, 因为每次是折半, 所以指数爆炸有多快,这个效率就有多高 POJ2456为例, 传送门 简而言之, 就是将牛之间的距离的最小值最大化. #include&l ...

  7. 第十届蓝桥杯省赛JavaC组真题——详细答案对照(完整版-包含打扫机器人的视频全过程讲解与编码内容对照)

    目录 A.求和 B.矩形切割 C.不同子串 D.质数 E.最大降雨量 F.旋转 G.外卖店优先级 H.人物相关性分析 I.等差数列 J.打扫机器人 A.求和 试题 A: 求和 本题总分:5 分 [问题 ...

  8. 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解

    ============================== 2019-2021蓝桥杯C++ C组真题题解: 2019第十届蓝桥杯大赛软件类省赛C++ C组真题题解 2020第十一届蓝桥杯大赛软件类省 ...

  9. 2019第十届蓝桥杯JAVA G组题解

    蓝桥杯历年真题及解析. 试题 A: 立方和 本题总分:5 分 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包 括 1.2.9.10 至 32.39 和 ...

最新文章

  1. 毫米波雷达分类和技术方案
  2. python anaconda下载包_【Python开发】anaconda3 安装python包
  3. 快速打开unity manual的方式
  4. 机加工程序工时程序_团宠来袭 | 针对多品种小批量的机加工柔性生产解决方案...
  5. 再谈PHP、Python与Ruby
  6. python点击按钮弹出新窗口_PyQt5点击button如何弹出新窗口?
  7. android 线性布局
  8. 管理:权力是用来完成责任的
  9. matlab 显示图像 去掉边框,Matlab显示图像时去除灰色边框
  10. 透明图片怎么发给别人_怎么用秀米写公众号文章
  11. 超简单Python实现微信机器人自动回复
  12. 【vbers】ibv_reg_mr|RDMA
  13. 电脑开机后实现自动开启移动热点,再也不用担心没流量了
  14. 计算机电脑为什么0无法输入,电脑浏览器网页无法输入文字该怎么办?
  15. 一周AI资讯|深度学习如何进行“读心术”?
  16. Java当中的IO流(中)
  17. 11201zxx学习日报
  18. fetion发送短信介绍(比如天气预报)
  19. 给IDEA换一个酷炫的主题
  20. Kubeadm 快速搭建 k8s 集群安装可视化管理界面

热门文章

  1. 多重共线性检验-方差膨胀系数(VIF)
  2. 计算机表格常用公式,教你玩转excel的五个常用公式,从此做表格再也不用求人了!...
  3. python用缩进来标明代码的层次关系_Python第二弹python基础
  4. 深度学习技巧应用20-六大学习率调优方案的应用,并根据实际情况选出最优策略
  5. Linxux应用开发-串口下载命令rzsz交叉编译
  6. C语言文件读取结束判断正确方式
  7. 计算机化系统验证管理 360,关于计算机化系统验证管理的十点建议
  8. pytorch保存模型的两种方法
  9. 悬镜安全与东方通达成战略合作,共筑国产软件供应链安全可信生态
  10. 联想笔记本安装ubuntu,无线网卡被禁用的问题及解决方法