2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告 | 珂学家

news2025/7/27 8:56:50

前言

在这里插入图片描述


题解

2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告。

模拟题为主,包含进制转换等等。

最后一题,是对向量/自定义类型,重定义小于操作符。

在这里插入图片描述

7-1 人工智能打招呼

分值: 15分

考察点: 分支判定,判重技巧

#include <bits/stdc++.h>

using namespace std;

int main() {
    int n;
    cin >> n;
    set<string> hp;
    for (int i = 0; i < n; i++) {
        string id; cin >> id;
        if (hp.find(id) == hp.end()) {
            cout << "Hello " << id << ", how are you?\n";
            hp.insert(id);
        } else {
            cout << "Hi " << id<< "! Glad to see you again!\n";
        }
    }

    return 0;
}

7-2 人工智能数字翻译

分值: 20分
考察:进制转换,10和27进制互转

在这里插入图片描述

#include <bits/stdc++.h>

using namespace std;

int main() {
    string a;
    int d;
    cin >> a >> d;
    if (d == 10) {
        string res;
        int s = stoi(a);
        while (s > 0) {
            int r = s % 27;
            if (r >= 0 && r < 10) {
                res += (char)(r + '0');
            } else {
                res += (char)(r - 10 + 'A');
            }
            s /= 27;
        }
        if (res.empty()) res = "0";
        reverse(res.begin(), res.end());
        // 去掉前置多余的0
        if (res[0] == '0' && res.size() > 0) {
            int pos = res.size() - 1;
            for (int i = 0; i < res.size(); i++) {
                if (res[i] != '0') {
                    pos = i;
                    break;
                }
            }
            res = res.substr(pos);
        }
        cout << res << "\n";
    } else {
        int64_t res = 0;
        string s = a;
        for (char c: s) {
            if (c >= '0' && c <= '9') {
                res = res * 27 + (c - '0');
            } else {
                res = res * 27 + (c - 'A' + 10);
            }
        }
        cout << res << "\n";
    }
    return 0;
}

7-3 机器人拼图

分值: 20分

模拟
在这里插入图片描述


#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;

    vector<vector<int>> mat(n, vector<int>(m, 0));
    for (int i = 0; i < n * m; i++) {
        string op; cin >> op;

        int x = 0, y = 0;
        for (char c: op) {
            if (c == '1') {
                y = min(y + 1, m - 1);
            } else if (c == '3') {
                y = max(y - 1, 0);
            } else if (c == '2') {
                x = min(x + 1, n - 1);
            } else if (c == '4') {
                x = max(x - 1, 0);
            } else {
                if (mat[x][y] == 0) {
                    mat[x][y] = i + 1;
                }
            }
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cout << mat[i][j] << " \n"[j == m - 1];
        }
    }

    return 0;
}

7-4 PAT基础级排名

分值: 20分

思路: 排序 + 分组循环

因为存在同分的情况,所以分组循环,是种优雅的写法

#include <bits/stdc++.h>

using namespace std;

struct Stu {
    string name;
    int score;
};

int main() {

    int n, L;
    cin >>n >> L;

    vector<Stu> arr;
    for (int i = 0; i < n; i++) {
        Stu stu;
        cin >> stu.name >> stu.score;
        arr.push_back(stu);
    }
    sort(arr.begin(), arr.end(), [](auto &a, auto &b) {
        if (a.score != b.score) return a.score > b.score;
        return a.name < b.name;
    });

    int levels[6] = {0, 30, 50, 60, 80, 100}; 
    auto resolve = [levels](int a) {
        for (int i = 5; i >= 0; i--) {
            if (a > levels[i]) return i + 1;
        }
        return 0;
    };
    int x = L + 1;
    int m = n;
    int acc = 0;
    int rank = 0;
    for (int i = 0;i < n; i++) {
        Stu &stu = arr[i];
        int level = resolve(stu.score);
        if (x > level) {
            m = m - acc;
            acc = 0;
            x = level;
            rank = 1;
        }
        acc++;
        if (acc > 1 && arr[i].score == arr[i - 1].score) {
            
        } else {
            rank = acc;
        }
        if (x != 0) {
            cout << stu.name << " " << x << " " 
                << stu.score << "/" << levels[x] << " "
                << rank << "/" << m << "\n";
          } else {
            cout << stu.name << "\n";
          }
    }
    
    return 0;
}

7-5 人工智能刑警

分值: 25分

思路: 自定义类型重定义小于操作符

因为这边采用map(底层是树),所以需要对自定义类型重定义小于操作符。

#include <bits/stdc++.h>

using namespace std;

struct T {
    vector<int> feature;
    bool operator<(const T&lhs) const {
        int n = feature.size();
        for (int i = 0; i < n; i++) {
            int v1 = feature[i], v2 = lhs.feature[i];
            if (v1 != v2) return v1 < v2;
        }
        return 0;
    }
};

int main() {
    map<T, string> hp;
    int n, f;
    cin >> n >> f;
    for (int i = 0; i < n; i++) {
        T t;
        for (int j = 0; j < f; j++) {
            int v; cin >> v;
            t.feature.push_back(v);
        }
        string name; cin >> name;
        hp[t] = name;
    }

    while (true) {
        bool ok = true;
        T t2;
        for (int i = 0; i < f; i++) {
            int v; 
            if (cin >> v && (v == 0 && i == 0)) {
                ok = false;
                break;
            }
            t2.feature.push_back(v);
        }
        if (!ok) break;
        
        if (hp.find(t2) != hp.end()) {
            cout << hp[t2] << "\n";
        } else {
            cout << "Pass"  << "\n";
        }
    }
    
    return 0;
}

写在最后

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2399477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

34.1STM32下的can总线实现知识(区分linux)_csdn

看过我之前的文章就知道&#xff0c;正点原子下的linux中CAN总线并没有讲的很明白&#xff0c;都是系统自带的&#xff01; 这里我找到江科大学长的can总线的讲解视频&#xff01; CAN总线入门教程-全面细致 面包板教学 多机通信_哔哩哔哩_bilibili 在这里我也会一步一步讲解CA…

2025年想冲网安方向,该考华为安全HCIE还是CISSP?

打算2025年往网络安全方向转&#xff0c;现在考证是不是来得及&#xff1f;考啥证&#xff1f; 说实话&#xff0c;网络安全这几年热得发烫&#xff0c;但热归热&#xff0c;入门门槛也不低&#xff0c;想进这个赛道&#xff0c;技术、项目经验、证书&#xff0c;缺一不可。 …

153页PPT麦肯锡咨询流程管理及企业五年发展布局构想与路径规划

麦肯锡咨询的流程管理以其高度结构化、数据驱动和结果导向的核心特点著称&#xff0c;旨在为客户提供清晰、可行且价值最大化的解决方案。其典型流程可概括为以下几个关键阶段&#xff1a;下载资料请查看文章中图片右下角信息 问题界定与结构化&#xff1a; 这是流程的基石。麦…

[特殊字符] 革命性AI提示词优化平台正式开源!

AI时代最强大的Prompt工程师已经到来&#xff01; 你是否还在为写不出高质量提示词而头疼&#xff1f;是否羡慕那些能够驾驭AI、让ChatGPT、Claude乖乖听话的"提示词大师"&#xff1f;今天&#xff0c;我们为你带来一个颠覆性的解决方案——TokenAI Auto-Prompt&…

我的概要设计模板(以图书管理系统为例)

一、总述 1.1 需求或目标 随着数字化阅读普及&#xff0c;传统图书馆管理方式效率低下、资源检索不便。为提升图书管理效率&#xff0c;方便读者借阅与查询&#xff0c;公司计划开发 “在线图书管理系统”&#xff0c;实现图书的电子化管理、快速检索、在线借阅等功能&#x…

DrissionPage爬虫包实战分享

一、爬虫 1.1 爬虫解释 爬虫简单的说就是模拟人的浏览器行为&#xff0c;简单的爬虫是request请求网页信息&#xff0c;然后对html数据进行解析得到自己需要的数据信息保存在本地。 1.2 爬虫的思路 # 1.发送请求 # 2.获取数据 # 3.解析数据 # 4.保存数据 1.3 爬虫工具 Dris…

iptables实战案例

目录 一、实验拓扑 二、网络规划 三、实验要求 四、环境准备 1.firewall &#xff08;1&#xff09;配置防火墙各大网卡IP并禁用 firewall和selinux &#xff08;2&#xff09;打开firewall路由转发 2.PC1&#xff08;内网&#xff09; &#xff08;1&#xff09;配置防…

Google AI 模式下的SEO革命:生成式搜索优化(GEO)与未来营销策略

一、搜索范式转变&#xff1a;从链接引导到答案交付 Google自2023年起逐步推出AI搜索功能&#xff0c;经历了SGE&#xff08;Search Generative Experience&#xff09;和Gemini阶段&#xff0c;最终在2025年全面上线了「AI Mode」搜索模式。与此同时&#xff0c;也保留了一种过…

SpringBoot中缓存@Cacheable出错

SpringBoot中使用Cacheable: 错误代码&#xff1a; Cacheable(value "FrontAdvertiseVOList", keyGenerator "cacheKey") Override public List<FrontAdvertiseVO> getFrontAdvertiseVOList(Integer count) {return this.list(Wrappers.<Adve…

iOS UIActivityViewController 组头处理

0x00 情形一 - (void)shareAction1 {// 当前 View 转成图片UIImage *image [self snapshotImage:self.view];NSArray *activityItems [image];UIActivityViewController *activityVC [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationAc…

《TCP/IP 详解 卷1:协议》第3章:链路层

以太网和IEEE802局域网/城域网标准 IEEE802局域网/城域网标准 IEEE 802 是一组由 IEEE&#xff08;电气与电子工程师协会&#xff09;定义的局域网和城域网通信标准系列&#xff0c;涵盖了从物理层到链路层的多个网络技术。其中&#xff1a; IEEE 802.3 定义的是传统的以太网…

Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程(二)

package com.test.xulk.es.entity.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.test.xulk.es.entity.Hotel;public interface HotelMapper extends BaseMapper<Hotel> { }集成Springboot 项目里面 官方地址&#xff1a; Elasticsearch …

数据库管理-第333期 Oracle 23ai:RAC打补丁完全不用停机(20250604)

数据库管理333期 2025-06-04 数据库管理-第333期 Oracle 23ai&#xff1a;RAC打补丁完全不用停机&#xff08;20250604&#xff09;1 概念2 要求3 操作流程4 转移失败处理总结 数据库管理-第333期 Oracle 23ai&#xff1a;RAC打补丁完全不用停机&#xff08;20250604&#xff0…

【DAY39】图像数据与显存

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点&#xff1a; 图像数据的格式&#xff1a;灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 作业&#xff1a;今日代码较少&#xff0…

AI代码库问答引擎Folda-Scan

简介 什么是 Folda-Scan &#xff1f; Folda-Scan 是一款革命性的智能项目问答工具&#xff0c; 完全在浏览器中本地运行 。它使用高级语义矢量化将您的代码库转变为对话伙伴&#xff0c;使代码理解和 AI 协作变得前所未有的简单和安全。其采用尖端的 Web 技术和 AI 算法构建&…

Kafka深度技术解析:架构、原理与最佳实践

一、 消息队列的本质价值与核心特性 1.1 分布式系统的“解耦器” 异步通信模型 代码列表 graph LRA[生产者] -->|异步推送| B[(消息队列)]B -->|按需拉取| C[消费者1]B -->|按需拉取| D[消费者2] 生产者发送后立即返回&#xff0c;消费者以自己的节奏处理消息。典…

基于cnn的通用图像分类项目

背景 项目上需要做一个图像分类的工程。本人希望这么一个工程可以帮助学习ai的新同学快速把代码跑起来&#xff0c;快速将自己的数据集投入到实战中&#xff01; 代码仓库地址&#xff1a;imageClassifier: 图片分类器 数据处理 自己准备的分类图像&#xff0c;按照文件夹分…

Linux环境管道通信介绍

目录 前言 一、通信的本质 二、匿名管道 1.通信资源——文件缓冲区 2.为什么叫匿名管道&#xff1f; ​编辑 3.匿名管道的创建过程 4.pipe函数 小结 5.一些问题 1&#xff09;匿名管道为什么要求父子进程将原本的读/写权限只保留一个 2&#xff09;为什么一开始父进程要以读/写…

DIC技术助力金属管材全场应变测量:高效解决方案

在石油管道、汽车排气系统、航空航天液压管路等工业场景中&#xff0c;金属管作为关键承力部件&#xff0c;其拉伸性能&#xff08;如弹性极限、颈缩行为、断裂韧性&#xff09;直接影响结构安全性和使用寿命。 实际应用中&#xff0c;选用合适的管材非常重要&#xff0c;通过…

嵌入式学习--江协stm32day1

失踪人口回归了&#xff0c;stm32的学习比起51要慢一些&#xff0c;因为涉及插线&#xff0c;可能存在漏插&#xff0c;不牢固等问题。 相对于51直接对寄存器的设置&#xff0c;stm32因为是32位修改起来比较麻烦&#xff0c;江协课程是基于标准库的&#xff0c;是对封装函数进…