蓝桥杯2019年省赛——扫地机器人

这篇具有很好参考价值的文章主要介绍了蓝桥杯2019年省赛——扫地机器人。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述

小明公司的办公区有一条长长的走廊,由 NN 个方格区域组成,如下图所示。

蓝桥杯2019年省赛——扫地机器人

走廊内部署了 K 台扫地机器人,其中第 i 台在第Ai​ 个方格区域中。已知扫地机器人每分钟可以移动到左右相邻的方格中,并将该区域清扫干净。

请你编写一个程序,计算每台机器人的清扫路线,使得

  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,K。

接下来 K行,每行一个整数 Ai​。

其中,1≤K<N≤105,1≤Ai​≤N。

输出描述

输出一个整数表示答案。

输入输出样例

示例

输入

10 3
5
2
10

输出

6

【思路及代码】

        本题属于二分算法题目,求最短的花费时间,所以可以对花费的时间使用二分来求解,最短的时间就是每个位置都已打扫完0,最长就是只有一台机器需要打扫n个地点且要回到原点,所以花费时间最长为2*n.

        需要找最小值,所以采用如下的二分模板

        while(l<r)

        {

                int mid=(l+r)>>1;

                if(check(mid))//符合条件

                        r=mid;//接着向左寻找最小值

                else l=mid+1;

        }

使用last记录需要打扫的最后位置,具体代码如下

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int n,st[N],k;
bool check(int mid)
{
	//if(mid<(a[1]-1)*2||mid<(n-a[k])*2)
	//	return false;
	int last=1;
	for(int i=1;i<=k;i++)
	{
		if(a[i]>last)//向左扫
		{
			if(a[i]-last>mid/2)
				return false;
			else if(a[i]-last==mid/2)
				last=a[i]+1;
			else if(a[i]-last<mid/2)
				last=a[i]+(mid/2-a[i]+last)+1;
		} 
		else if(a[i]<=last)//向右扫 
		{
			last=max(last,a[i]+mid/2+1);
		}
		/* 
		if(a[i]-last>mid/2)
			return false;
		if((a[i]-last)==mid/2) last=a[i];
		else if((a[i]-last)<mid/2) 
			last=a[i]+(mid/2-a[i]+last);
		*/
	}	 
	if(last>n) return true;
	else
	return false;
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=k;i++)
	{
		cin>>a[i];
	}
	sort(a+1,a+1+k);//按照所在位置的先后位置排序 
	int l=0,r=2*n;//最长用的时间 
	while(l<r)
	{
		int mid=(l+r)/2;
		if(check(mid))
			r=mid;
		else l=mid+1;
	}
	cout<<l;
	return 0;
}

 文章来源地址https://www.toymoban.com/news/detail-458395.html

到了这里,关于蓝桥杯2019年省赛——扫地机器人的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 扫地机器人经营商城小程序的作用是什么

    扫地机器人对人们生活大有帮助,近些年也有不少企业开创品牌,在电商平台每年销量也非常高,同行竞争激烈及私域化程度加深情况下,虽然第三方平台或线下方式也有生意,但互联网电商发展也为商家们带来了诸多痛点。 那么通过【 雨科 】平台搭建 扫地机器人经营小程

    2024年02月05日
    浏览(45)
  • 物联网毕业设计 单片机智能扫地机器人设计与实现

    Hi,大家好,学长今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于stm32的智能扫地机器人设计与实现 选题指导,项目分享: https://gitee.com/yaa-dc/warehouse-1/blob/master/iot/README.md 随着人口老龄化的到来和人民对提升生活品质的需要, 人们对在现实生活场景

    2024年02月08日
    浏览(60)
  • 单片机毕业设计 stm32智能扫地机器人设计与实现

    Hi,大家好,学长今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于stm32的智能扫地机器人设计与实现 随着人口老龄化的到来和人民对提升生活品质的需要, 人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。 同时, 机电、 自动控制、

    2024年02月04日
    浏览(57)
  • 【计算机视觉】基于三维重建和点云处理的扫地机器人寻路

    [摘要] 扫地机器人的使用已经越发普及,其中应用到了三维重建的知识。本项目旨在设计由一   定数量的图像根据算法完成三维模型的建立,并利用三维数据最终得到扫地机器人的行驶路   线,   完成打扫机器人成功寻路的任务   。本项目采用的方法是 SFM-MVS   、Colmap  

    2024年01月21日
    浏览(58)
  • 毕业设计 嵌入式 stm32智能扫地机器人设计与实现 - 单片机 物联网

    Hi,大家好,学长今天向大家介绍一个 单片机项目,大家可用于 课程设计 或 毕业设计 基于stm32的智能扫地机器人设计与实现 随着人口老龄化的到来和人民对提升生活品质的需要, 人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。 同时, 机电、 自动控制、

    2024年02月02日
    浏览(69)
  • 【Python数据结构与算法】--- 递归算法的应用 ---[乌龟走迷宫] |人工智能|探索扫地机器人工作原理

    🌈个人主页: Aileen_0v0 🔥系列专栏:PYTHON数据结构与算法学习系列专栏 💫\\\"没有罗马,那就自己创造罗马~\\\"  目录 导言  解决过程  1.建立数据结构 2.探索迷宫: 算法思路 递归调用的“基本结束条件” 3.乌龟走迷宫的实现代码: 运行过程: 拓展: 📝全文总结:  乌龟探索迷宫这个问

    2024年02月05日
    浏览(53)
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-- 第三题 跑团机器人 (已完结)

    其它题目 RC-u3 跑团机器人 在桌面角色扮演游戏(TRPG,俗称“跑团”)中,玩家需要掷出若干个骰子,根据掷出的结果推进游戏进度。在线上同样可以跑团,方法是由玩家们向机器人发出指令,由机器人随机产生每个需要掷出的骰子的结果。 玩家向机器人发出的指令是一个仅

    2024年02月16日
    浏览(45)
  • 中职工业机器人省赛任务解答(定制涂胶)

    题目要求:  解决思路: 1.利用竞赛软件(PQART)自动生成路径功能,获取点位数据 2.根据轨迹点位个数创建数组 3.利用setdataval指令将点位批量写入数组 4.“射击”法编写程序,给定起始点及方向 详细步骤: 1.详读任务书要求,图E4为触摸屏交互界面,其数据由PLC发送给机器

    2024年02月03日
    浏览(44)
  • 2022 RoboCom 世界机器人开发者大赛-高职组(省赛)

    RC-v1 您好呀 分数 5 本届比赛的主题是“智能照护”,那么就请你首先为智能照护机器人写一个最简单的问候程序 —— 无论遇见谁,首先说一句“您好呀~”。 输入格式: 本题没有输入 输出格式: 在一行中输出问候语的汉语拼音  Nin Hao Ya ~ 。 输入样例: 输出样例:  提交

    2024年02月16日
    浏览(41)
  • 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)

    1、不要浪费金币 哲哲最近在玩一个游戏,击杀怪物能获得金币 —— 这里记击杀第 i 个怪物获得的金币数量为 P i ​ 。 然而这个游戏允许拥有的金币数量是有上限的,当超过时,超过上限的部分就会被系统光明正大地吃掉,哲哲就拿不到了。 为了不浪费金币,哲哲决定,当

    2024年02月03日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包