清洁机器人

news/2024/11/30 5:57:50/

//何老板翻译

问题描述

何老板的公司生产了一种机器人,可以用于在运动会后清理运动场上的垃圾。在机器人开始工作前,给出了一张网格状的地图,每个包含垃圾的格子都被标记上了“G”。所有的机器人一开始都位于西北方的那一角,在工作结束时所有的机器人都会走到东南方的那一角。每个机器人只能往东和往南两个方向行走。一走到有垃圾的格子,机器人就会把垃圾清理掉。一旦机器人走到了东南方那一个角,它就会自动切断电源,不能再次工作。
你的任务是计算出最少需要多少个机器人,就能清理完所有的垃圾。
例如下图:所有的机器人一开始在(1,1)位置,结束时在(6,7)位置
这里写图片描述
下图展示了两种可能的方案,其中第二种方案更好,因为它只用了两个机器人。
这里写图片描述

输入格式

由一行或多行构成,每行两个空格间隔的整数,表示一个包含垃圾的格子坐标
输入由0 0 作为结束。
注:每组测试数据的格子坐标是按行由小到大的顺序给出。
地图的行数和列数都不超过24

输出格式

若干行,每行一个整数,表示对应测试数据的结果。

样例输入

1 2
1 4
2 4
2 6
4 4
4 7
6 6
0 0

样例输出

2


题解

思路1:DP

此问题可转化为求“最长上升子序列”。
显然,假如其中的一些垃圾从左下往右上排列,其中任何两格垃圾都不能用一个机器人收集。所以,所需机器人数即为最长的这样的序列的长度(显然,其它垃圾都可以用清理这些格子的机器人清理,否则序列还可加长)。
推出方程,可用前缀和优化。

思路2:二分图

开始我们假设每个格子都需要一个机器人。
显然,如果一个机器人能从i 号垃圾走到j 号垃圾,那么j 号的机器人可以不用。
并且,每个机器人清理完某个垃圾后,接下来只能去另一格,每个垃圾又只能由一个机器人清理。这就转化为了二分图模型(如果i 号垃圾可到达j 号垃圾,则从 i 向 j’连边)。
但这种方法在时空效率上显然没有DP优秀。。。


代码

1、DP
#include <cstdio>
#include <iostream>
using namespace std;
int f[29][29],a[29][29];
int main()
{
    int i,j;
    while(true)
    {
        scanf("%d%d",&i,&j);
        if((!i)&&(!j))break;
        a[i][j]=1;
    }
    for(i=24;i;--i)
        for(j=1;j<=24;j++)
            f[i][j]=max(f[i+1][j],max(f[i][j-1],a[i][j]+f[i+1][j-1]));
    printf("%d",f[1][24]);
    return 0;
}
2、二分图
#include <cstdio>
#include <iostream>
using namespace std;
const int Q=1e3;
int link[Q],ch[Q],e[Q*Q],nn[Q*Q],last[Q],x[Q],y[Q],tot=0;
bool search(int x,int k)
{for(int t=last[x];t;t=nn[t]){int y=e[t];if(ch[y]==k)continue;ch[y]=k;if((!link[y])||search(link[y],k)){link[y]=x;return true;}}return false;
}
void add(int x,int y)
{e[++tot]=y;nn[tot]=last[x];last[x]=tot;
}
int main()
{int i,j,n=0,ans=0;while(true){scanf("%d%d",&x[n+1],&y[n+1]);if((!x[n+1])&&(!y[n+1]))break;++n;}for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(i!=j&&x[i]<=x[j]&&y[i]<=y[j])add(i,j);for(i=1;i<=n;i++)if(search(i,i))ans++;printf("%d",n-ans);return 0;
}

http://www.ppmy.cn/news/917904.html

相关文章

【Robot】扫地机器人实现方案

https://www.zhihu.com/question/34225488 孙大圣 研究女人的男人 7 人赞同 呦~小姑凉好孝顺呀 都想着给爸妈买东西呀 有男朋友吗 微信加一个呗~~~ TCL扫地机器人好不好用我不知道 没用过哦 不过我之前我看同事转发的一篇试用报告 我复制给你喽 希望能帮上你的忙 好用的话就留…

保洁实业如何使用虚拟机器人提高安全性

今天我们来看几个典型问题&#xff1a; 1、员工手动统计数据&#xff0c;把数据上传到指定系统。由于数据量大&#xff0c;经常发生人为纰漏。 2、工作人员需要定期手工核对数据差异&#xff0c;核对工作量大&#xff0c;且差异反馈不及时。 3、业务系统竖井式建设导致业务流程…

高仙机器人携手高地瓴智,开拓数智化保洁新蓝海

8月15日&#xff0c;上海高仙机器人科技有限公司&#xff08;以下简称&#xff1a;高仙机器人&#xff09;正式携手高地城市服务产业集团&#xff08;以下简称&#xff1a;高地&#xff09;旗下智慧服务品牌“高地瓴智”成立合资公司&#xff0c;双方将以“智能保洁机器人保洁管…

鲁大师7月新机性能/流畅榜:骁龙8+正面对决天玑9000+,性能跑分突破123万!

鲁大师数据中心公布了7月安卓新发布手机性能、流畅度排行榜&#xff0c;数据来自鲁大师APP 07.01日-07.31日的数据&#xff0c;榜单只筛选在这期间新发布的机型。部分新机测试数据较少或为工程机数据&#xff0c;分数不稳定。 榜单展示分数为鲁大师数据中心均分&#xff0c;已…

联汇科技发布自主智能体 OmBot 欧姆智能体及 OmBot OS 操作系统

今年加入 OpenAI 的大牛、前特斯拉 AI 总监 Karpathy 在最近的一次开发者活动上表示&#xff1a;AI 智能体&#xff0c;代表了 AI 的一种未来&#xff01; 不仅是他&#xff0c;全球 AI 领域的大佬和科技巨头对 AI 智能体的发展都表现出极大兴趣&#xff0c;并寄予厚望。 大语言…

MySQL的安装与配置

今天要和大家唠唠关于数据库的那些事儿&#xff01;按照加哥一贯的调性&#xff0c;咱还是从花边八卦聊起。先来简 单地梳理一下数据库、MySQL发展的时间线&#xff1a; 1970年&#xff0c;在IBM公司工作的数学家 E.F.Codd 发表了数学论文《大型共享数据库的关系数据模型》 &am…

WLAN和移动网互通技术分析

WLAN以其独特的优势&#xff0c;比如&#xff0c;热点覆盖、低移动性和高数据传输速率&#xff0c;与移动网形成了很好的互补&#xff0c;因而在移动网中的应用越来越广泛。从国外运营商到国内运营商&#xff0c;都在不断扩展、完善移动网和WLAN的互通技术&#xff0c;目的是快…

安卓WiFi基本使用

大家学习安卓WiFi基本使用的时候首先应该请清楚什么是WiFi&#xff0c;在现在这个时代相信绝大多数人都接触过WiFi了 &#xff0c;我们整天说WiFi可是WiFi到底是什么呢&#xff1f;很多人也许只知道有WiFi可以免费上网&#xff0c;这话没毛病&#xff0c;WiFi其实是一种允许电子…