2022 RoboCom 世界机器人开发者大赛(睿抗 caip) -高职组(国赛)解题报告 | 科学家

article/2025/9/5 9:32:29

前言

在这里插入图片描述


题解

2022 RoboCom 世界机器人开发者大赛(睿抗 caip) -高职组(国赛)。
最后一题还考验能力,需要找到合适的剪枝。


RC-v1 智能管家

分值: 20分

在这里插入图片描述

签到题,map的简单实用

#include <bits/stdc++.h>using namespace std;int main() {int n, m;ios::sync_with_stdio(false);cin.tie(nullptr); cout.tie(nullptr);cin >>n >> m;vector<int> hp(n + 1);for (int i = 0; i < n; i++) {int id; cin >> id;hp[i + 1] = id;} int q;cin >> q;while (q-- > 0) {map<int, int> cnt;int w;while ( cin >> w && w > 0) {cnt[hp[w]]++;}bool f = false;for (auto &e: cnt) {if (f) cout << " ";f = true;cout << "B" << e.first << "-" << e.second;}cout << "\n";}return 0;
}

RC-v2 智能陪护

分值: 25分

在这里插入图片描述
具体可查看

RC-v2 智能陪护 争议解读


#include <bits/stdc++.h>using namespace std;struct T {string name;int op;string at;T(string name, int op, string at): name(name), op(op), at(at) {}
};int main() {int n, m;cin >> n >> m;deque<string> man;deque<string> robot;for (int i = 1; i <= n; i++) robot.push_back(to_string(i));vector<T> seq;for (int i = 0; i < m; i++) {string name, at;int op;cin >> name >> op >> at;seq.push_back(T(name, op, at));}sort(seq.begin(), seq.end(), [](auto &a, auto &b) {if (a.at != b.at) return a.at < b.at;if (a.op != b.op) return a.op < b.op;return a.name < b.name;});int idx = 0;map<string, int> hp;int ptr = 0;vector<array<string, 2>> res;for (auto &e: seq) {        if (e.op == 1) {hp[e.name] = idx++;if (robot.empty()) {res.push_back({e.name, ""});}else {string v = robot.front(); robot.pop_front();res.push_back({e.name, v});cout << e.name << " - " << v << "\n";}} else {           int pos = hp[e.name];string v = res[pos][1];if (v == "") {// passres[pos][1] = "NONE";cout << res[pos][0] << " - " << "NONE" << "\n";} else {robot.push_back(v);while (!robot.empty() && ptr < res.size()) {if (res[ptr][1] != "") {ptr++;} else {string v = robot.front(); robot.pop_front();res[ptr][1] = v;cout << res[ptr][0] << " - " << v << "\n";ptr++;}}}}}    while (!robot.empty()) {string v = robot.front(); robot.pop_front();cout << v;cout << " \n"[robot.empty()];}return 0;
}

RC-v3 智能护理中心统计

分值:25分

考察点: 建树(指向父节点+子节点)

因为关系链最多m( m ≤ 10 5 m\le 10^5 m105), 操作次数 10 2 10^2 102, 因此每次操作全量遍历即可,整个时间复杂度最多 10 7 10^7 107

#include <bits/stdc++.h>using namespace std;struct Node {int v = 0;string fa = "";set<string> childs;Node() {}Node(int v) : v(v) {}
};map<string, Node> mp;bool isNum(const string &v) {return v[0] >= '0' && v[0] <= '9';
}int dfs(const string &u) {int res = mp[u].v;for (const string &v: mp[u].childs) {res += dfs(v);}return res;
}int main() {ios::sync_with_stdio(false);cin.tie(nullptr); cout.tie(nullptr);int n, m;cin >> n >> m;for (int i = 0; i < m; i++) {string u, v;cin >> u >> v;if (!mp.count(u)) {mp[u] = Node(isNum(u)?1:0);}if (!mp.count(v)) {mp[v] = Node(0);}mp[v].childs.insert(u);mp[u].fa = v;}// 处理操作string op;while (cin >> op && op != "E") {if (op == "T") {string u, v;cin >> u >> v;if (!mp.count(v)) {mp[v] = Node(0);}if (!mp.count(u)) {mp[u] = Node(1);}if (!mp[u].fa.empty()) {mp[mp[u].fa].childs.erase(u);}     mp[v].childs.insert(u);mp[u].fa = v;} else {string u;cin >> u;if (mp.count(u) == 0) cout << (isNum(u) ? 1 : 0) << "\n";else {cout << dfs(u) << "\n";}}}return 0;
}

RC-v4 情人节的蜜语

分值: 30分

思路: dfs + 剪枝

在这里插入图片描述

说白了在n*m的矩阵中,寻找长度为p的模式, n , m ≤ 100 , p ≤ 20 n,m\le 100, p \le 20 n,m100,p20

纯dfs搜索的话,拿不到满分,大概是25/30的样子。

那这边就需要考虑如何优化的问题了。

引入类似布隆过滤器的机制 引入类似 布隆过滤器的机制 引入类似布隆过滤器的机制

引入 c a n [ i ] [ x ] [ y ] , 表示第 i 匹配, x y 坐标开始可能性,这个 c a n 不追求去重 can[i][x][y], 表示第i匹配,xy坐标开始可能性,这个can不追求去重 can[i][x][y],表示第i匹配,xy坐标开始可能性,这个can不追求去重

如何理解这个不去重呢?

  1. 如果can为true,精确结果不保证一定为true
  2. 如果can为false,最终结果一定为false

这就是所谓的 False Positive

这个预处理后,在dfs优化,可以大大减低搜索量,就能30/30。

#include <bits/stdc++.h>
using namespace std;int m, n, L;
vector<string> grid;
string target;
// can[i][x][y]: 从 (x,y) 匹配到 target[i] 起,能否完成剩余匹配
bool can_[21][100][100];
bool vis[100][100];
vector<pair<int,int>> path;
int dx[8]={-1,-1,-1,0,0,1,1,1}, dy[8]={-1,0,1,-1,1,-1,0,1};
bool found=false;// 剪枝后的 DFS
void dfs(int x, int y, int idx){if(found) return;path.emplace_back(x,y);if(idx+1 == L){found = true;return;}vis[x][y] = true;for(int d=0; d<8; d++){int nx = x+dx[d], ny = y+dy[d];if(nx<0||nx>=m||ny<0||ny>=n) continue;if(vis[nx][ny]) continue;if(grid[nx][ny] != target[idx+1]) continue;if(!can_[idx+1][nx][ny]) continue;  // 剪掉不可能完成的dfs(nx, ny, idx+1);if(found) break;}if(!found){vis[x][y]=false;path.pop_back();}
}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cin >> m >> n;grid.resize(m);for(int i=0;i<m;i++) cin >> grid[i];cin >> target;L = target.size();// 1) 后向可达性 DPmemset(can_, 0, sizeof(can_));// 最后一层for(int x=0;x<m;x++){for(int y=0;y<n;y++){if(grid[x][y] == target[L-1])can_[L-1][x][y] = true;}}// 反向递推for(int i=L-2; i>=0; i--){for(int x=0;x<m;x++){for(int y=0;y<n;y++){if(grid[x][y] != target[i]) continue;for(int d=0; d<8; d++){int nx=x+dx[d], ny=y+dy[d];if(nx<0||nx>=m||ny<0||ny>=n) continue;if(can_[i+1][nx][ny]){can_[i][x][y] = true;break;}}}}}// 2) 从可达的起点开始 DFSfor(int x=0; x<m && !found; x++){for(int y=0; y<n && !found; y++){if(grid[x][y]==target[0] && can_[0][x][y]){dfs(x,y,0);}}}// 输出vector<string> out(m, string(n,'.'));for(auto &p: path){out[p.first][p.second] = grid[p.first][p.second];}for(int i=0;i<m;i++){cout << out[i] << "\n";}return 0;
}

写在最后

在这里插入图片描述


http://www.hkcw.cn/article/MRSZvrrcMG.shtml

相关文章

typora插件下载链接和导入说明

1.引言 先看插件效果&#xff0c;本插件自带了历史文件tab切换、引用图片管理、思维导图、文档大纲、图排优化、文件模板、夜间模式等很多功能&#xff0c;插件的下载链接在本文最后。 2.安装插件 typora-0.9.98 之前的版本不推荐使用 插件解压为plugin文件夹&#xff0c;并移…

深化生态协同,宁盾身份域管完成与拓波软件兼容互认证

在信创产业蓬勃发展的浪潮下&#xff0c;行业生态的兼容适配决定了信创产品是否好用。近日&#xff0c;宁盾身份域管与拓波软件 TurboEX 邮件系统完成兼容互认证。测试结果显示宁盾身份域管&#xff08;信创版&#xff09;与 TurboEX 邮件服务器软件相互良好兼容&#xff0c;运…

Socket 编程 TCP

目录 1. TCP socket API 详解 1.1 socket 1.2 bind 1.3 listen 1.4 accept 1.5 read&&write 1.6 connect 1.7 recv 1.8 send 1.9 popen 1.10 fgets 2. EchoServer 3. 多线程远程命令执行 4. 引入线程池版本翻译 5. 验证TCP - windows作为client访问Linu…

SmolVLM2: The Smollest Video Model Ever(七)

编写测试代码与评价指标 现在的数据集里面只涉及tool的分类和手术phase的分类&#xff0c;所以编写的评价指标还是那些通用的&#xff0c;但是&#xff1a; predicted_labels:[The current surgical phase is CalotTriangleDissection, Grasper, Hook tool exists., The curre…

Cancer Cell丨肺癌早期干预新突破,TIM-3靶点或成关键

2025年5月8日&#xff0c;Cancer Cell 在线发表了一篇来自美国MD安德森癌症中心的研究文章Spatial and multiomics analysis of human and mouse lung adenocarcinoma precursors reveals TIM-3 as a putative target for precancer interception。作者整合了空间蛋白组、转录组…

全志V853挂载sd卡

参考文章:https://blog.csdn.net/weixin_59351001/article/details/127102440 1、插上sd卡 fdisk -l2、挂载SD卡到开发板 mount /dev/mmcblk1p1 /mnt/sdcard挂载失败(如下报错),需要格式化SD卡再进行挂载

性能测试-jmeter实战1

课程&#xff1a;B站大学 记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师 性能测试-jmeter实战1 为什么需要性能测试呢&#xff1f;性能测试的作用&#xff1f;性能测试体系性能测试基础性能测试工具性能监控…

PABD 2025:大数据与智慧城市管理的融合之道

会议简介 2025年公共管理与大数据国际会议&#xff08;ICPMBD 2025&#xff09;确实在海口举办。本次会议将围绕公共管理与大数据的深度融合、数据分析在公共管理中的应用、大数据驱动的政策制定与优化等议题展开深入研讨。参会者将有机会聆听前沿学术报告&#xff0c;分享研究…

DL00924-基于深度学习YOLOv11的工程车辆目标检测含数据集

文末有代码完整出处 &#x1f697; 基于深度学习YOLOv11的工程车辆目标检测——引领智能识别新潮流&#xff01; &#x1f680; 随着人工智能技术的飞速发展&#xff0c; 目标检测 已经在各个领域取得了显著突破&#xff0c;尤其是在 工程车辆识别 这一关键技术上。今天&#…

Java 对接 Office 365 邮箱全攻略:OAuth2 认证 + JDK8 兼容 + Spring Boot 集成(2025 版)

&#x1f6a8; 重要通知&#xff1a;微软强制 OAuth2&#xff0c;传统认证已失效&#xff01; 2023 年 10 月起&#xff0c;Office 365 全面禁用用户名 密码认证&#xff0c;Java 开发者必须通过OAuth 2.0实现邮件发送。本文针对 CSDN 技术栈&#xff0c;提供从 Azure AD 配置…

秒杀/高并发解决方案+落地实现

前面我们防止超卖 是通过到数据库查询和到数据库抢购,来完成的, 代码如下:如果在短时间内,大量抢购冲击 DB, 造成洪峰, 容易压垮数据库解决方案:使用 Redis 完成预减库存,如果没有库存了,直接返回,减小对 DB 的压力。图示:Redis 的预减,已经存在了原子性,就是一条一条…

Baklib企业知识激活解决方案

Baklib知识中台构建路径 Baklib通过模块化架构设计与智能数据治理双轮驱动&#xff0c;为企业构建知识中台提供标准化实施路径。首先基于自然语言处理&#xff08;NLP&#xff09;技术实现非结构化文档的语义解析&#xff0c;打通CRM、ERP等业务系统间的数据孤岛&#xff1b;随…

【Gemini 深度研究】人形机器人:最新开发方案与未来展望 (2024-2025)

Gemini根据深度研究报告自动生成的html网页录屏 人形机器人&#xff1a;最新开发方案与未来展望 (2024-2025) I. 执行摘要 2024年至2025年&#xff0c;人形机器人正处于从科研探索向实际应用转型的关键时期&#xff0c;其作为通用型机器人的潜力日益显现。这一转变主要得益于具…

【动态规划:斐波那契数列模型】第 N 个泰波那契数

1、第 N 个泰波那契数&#xff08;easy&#xff09; 1137. 第 N 个泰波那契数 泰波那契序列 Tn 定义如下&#xff1a; ​ T0 0, T1 1, T2 1, 且在 n > 0 的条件下 Tn3 Tn Tn1 Tn2。给你整数 n&#xff0c;请返回第 n 个泰波那契数 Tn 的值。 示例 1&#xff1a; …

秋招Day11 - JVM - JVM调优

性能监控的命令行工具&#xff1f; 操作系统层面&#xff1a; 我用过top来查看cpu和内存的使用情况使用过vmstat查看过虚拟内存的统计信息使用过iostat查看过系统的io情况使用过netstat查看过系统的网络信息 JDK自带的命令层面&#xff0c;我使用过&#xff1a; jmap -heap…

ChatGPT Plus/Pro 订阅教程(支持支付宝)

订阅 ChatGPT Plus GPT-4 最简单&#xff0c;成功率最高的方案 1. 登录 chat.openai.com 依次点击 Login &#xff0c;输入邮箱和密码 2. 点击升级 Upgrade 登录自己的 OpenAI 帐户后&#xff0c;点击左下角的 Upgrade to Plus&#xff0c;在弹窗中选择 Upgrade plan。 如果…

【深度学习】12. VIT与GPT 模型与语言生成:从 GPT-1 到 GPT4

VIT与GPT 模型与语言生成&#xff1a;从 GPT-1 到 GPT4 本教程将介绍 GPT 系列模型的发展历程、结构原理、训练方式以及人类反馈强化学习&#xff08;RLHF&#xff09;对生成对齐的改进。内容涵盖 GPT-1、GPT-2、GPT-3、GPT-3.5&#xff08;InstructGPT&#xff09;、ChatGPT …

笔试模拟 day14

观前提醒&#xff1a; 笔试所有系列文章均是记录本人的笔试题思路与代码&#xff0c;从中得到的启发和从别人题解的学习到的地方&#xff0c;所以关于题目的解答&#xff0c;只是以本人能读懂为目标&#xff0c;如果大家觉得看不懂&#xff0c;那是正常的。如果对本文的某些知…

基于照片环境信息的AI定位技术:从原理到实战的深度解析

基于照片环境信息的AI定位技术&#xff1a;从原理到实战的深度解析 摘要 本文聚焦基于照片环境信息的AI定位技术&#xff0c;系统梳理其核心原理、技术实现路径及行业应用场景。结合多模态融合、深度学习优化等前沿技术&#xff0c;分析如何通过AI训练提升定位精度&#xff0c…

NumPy 2.x 完全指南【二十二】数组标量

文章目录 1. 标量&#xff08;Scalar &#xff09;2. 数组标量&#xff08;Array Scalar&#xff09;3. 标量类型3.1 基类3.1.1 generic3.1.2 number3.1.3 flexible 3.2 整数类型3.2.1 有符号整数3.2.2 无符号整数 3.3 不精确类型3.3.1 浮点数3.3.2 复数 3.4 其他类型3.4.1 布尔…