2022 robocom 世界机器人开发者大赛-本科组(国赛)

RC-u1 智能红绿灯

题目描述:
RC-u1 智能红绿灯
为了最大化通行效率同时照顾老年人穿行马路,在某养老社区前,某科技公司设置了一个智能红绿灯。

这个红绿灯是这样设计的:

  • 路的两旁设置了一个按钮,老年人希望通行马路时会按下按钮;
  • 在没有人按按钮的时候,红绿灯一直为绿灯;
  • 当红绿灯为绿灯时,有人按下按钮,第一次按下按钮的 15 秒后绿灯会转红;
  • 转红后,红灯会持续 30 秒,方便老年人穿行马路;
  • 在 30 秒的红灯期间,假如有人再次按下按钮,则红灯会再延续 15 秒;
  • 延续一次后不会再次延续。

现在给定按钮被按下的时间点,请你输出这个智能红绿灯的红灯时间区间。

注意:我们假设同一秒内,红绿灯先变化,然后按钮再被按下。每 1 秒理解为一个时间点。例如:在第 1 秒按下按钮,则第 16 秒开始变红;如果没有人在第 16 - 45 秒这个闭区间内按下按钮,则到第 46 秒开始变绿。而在第 46 秒按下按钮的人,需要等 15 秒后才有红灯。

输入格式:
输入第一行为 N (1≤N≤1000),表示按钮被按下的次数。

接下来一行 N 个非负整数,表示按钮被按下的时间点。一个时间点按钮有可能会被多次按下,给出的时间点保证是不递减的。

时间点的范围不超过 10^4。

输出格式:
输出若干行,按起始时间从小到大输出互不相交的红灯的时间区间。

输入样例:

10
3 4 5 6 33 45 49 70 90 100

输出样例:

18 62
85 129

代码实现:

#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
const int N=1005;
int a[N];
signed main(){int n;cin>>n;for(int i=0;i<n;i++)cin>>a[i];int bg=a[0]+15,ed=bg+29,flag=0;for(int i=1;i<n;i++){if(a[i]<=ed&&a[i]>=bg){if(!flag)ed+=15;flag=1;}else{if(a[i]>ed){cout<<bg<<" "<<ed<<endl;bg=a[i]+15,ed=bg+29,flag=0;}}}cout<<bg<<" "<<ed<<endl;return 0;
}

RC-u2 女王的大敕令

题目描述:
女王的大敕令
副本是游戏里的一个特色玩法,主要为玩家带来装备、道具、游戏资源的产出,满足玩家的游戏进程。

在 MMORPG《最终幻想14》里,有一个攻略人数最大达到 48 人的副本“零式贡希尔德神庙”,其中守关 BOSS “天佑女王”有一个很有趣的技能:“女王的大敕令”。

技能在一个 5×5 的棋盘上展开。每位玩家根据给定的两个步长,从某个方格出发,在棋盘上先走 D1步,再走 D2步。其中“步长”指的是曼哈顿距离,即:设两个方格的坐标分别为 (Xi,Y i) 以及 (Xj,Yj),则这两个方格的曼哈顿距离 D=∣Xi−X j∣+∣Yi−Y j∣。

例如下图中的 A 点与 B 点的曼哈顿距离为 5:image

技能开始时,场地外围会出现 4 只小怪,东南西北(即棋盘的右、下、左、上)方向各出现一只小怪,且小怪一定出现在某行或某列对应的位置上。第 i 只小怪会顺时针朝固定方向移动 ni步(题目保证不会移出界,即移动后仍然在对应着某行/某列的位置上),且:

  • 北边的小怪固定向右移动;
  • 东边的小怪固定向下移动;
  • 南边的小怪固定向左移动;
  • 西边的小怪固定向上移动。

小怪出现后,棋盘上还会出现一个发光的格子,这是玩家移动的目标点,如图所示:image
玩家必须在不被小怪杀死的前提下,按规定步长,用两个回合到达目标点。技能流程如下:

1、玩家先选择一个起始方格;
2、东、西两侧的小怪开始按照固定方向移动,移动完毕后 4 只小怪会同时开展攻击,其中东、西两侧的小怪攻击自己所对应的一整行,南、北两侧的小怪攻击自己所对应的一整列。玩家若处在攻击区内则任务失败。
3、玩家移动 D1步,到达某个方格;
4、南、北两侧的小怪开始按照固定方向移动,移动完毕后 4 只小怪会同时开展攻击,同第 2 步;
5、玩家移动 D2步,此时必须到达目标点,否则任务失败。
以下是上面的 4 只小怪都移动后的攻击范围的示意图:image
给定小怪起始位置以及移动步数 ni和目标点位置,请输出所有安全的移动方案,包括起始点以及第一次移动的目的地。

输入格式:
输入第一行是四个数 C1,C2,R1,R2,分别表示:

  • 北边(上面)的小怪 1 在第 C1列的位置上;
  • 南边(下面)的小怪 2 在第 C2列的位置上;
  • 西边(左边)的小怪 3 在第 R1行的位置上;
  • 东边(右边)的小怪 4 在第 R2行的位置上。

输入第二行是四个数 ni(i=1,⋯,4),按照上面的顺序给出小怪移动的步数,保证小怪移动后仍然处于某行或某列对应的位置上。

输入第三行是四个数 row,col,D1,D2,依次表示目标点的位置,以及玩家要走的两个步长。这里某方格的“位置” (row,col) 指的是该方格的行号、列号组成的二元组。

我们假设左上角的方格位置为 (1, 1)。

输出格式:
输出安全移动的方案,方案由两个位置共四个数组成,前两个数为初始选择的方格的位置,后两个数为第一次停留的位置。

对于多个方案的情况,先按初始方格位置从小到大输出,初始方格相同时按第一次停留位置从小到大输出。一个坐标 (ri,ci) 比另一个坐标 (rj,cj) 小,当且仅当 ri<rj,或 ri=rj的同时有 ci<cj。

输入样例:

2 4 4 2
1 2 3 2
5 3 3 4

输出样例:

2 1 2 4
2 3 3 1
2 3 3 5

代码实现:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
const int N=10;
int tr[N],dir[N];
struct node{int x,y,l,r;
}a[105];
vector<node>v;
bool cmp(node a,node b){if(a.x!=b.x)return a.x<b.x;else if(a.y!=b.y)return a.y<b.y;else if(a.l!=b.l)return a.l<b.l;else return a.r<b.r;
}
int cal(int x1,int y1,int x2,int y2){return abs(x2-x1)+abs(y2-y1);
}
int main(){for(int i=1;i<=4;i++)cin>>dir[i];for(int i=1;i<=4;i++)cin>>tr[i];int row,col,d1,d2;cin>>row>>col>>d1>>d2;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){for(int i1=1;i1<=5;i1++){for(int j1=1;j1<=5;j1++){if(cal(i1,j1,i,j)==d1&&cal(row,col,i1,j1)==d2){int k1=min(5,dir[4]+tr[4]),k2=max(1,dir[3]-tr[3]);if(i!=k2&&i!=k1&&j!=dir[1]&&j!=dir[2]){int k3=min(5,dir[1]+tr[1]),k4=max(1,dir[2]-tr[2]);if(i1!=k2&&i1!=k1&&j1!=k3&&j1!=k4)v.push_back({i,j,i1,j1});}}}}}}sort(v.begin(),v.end(),cmp);for(int i=0;i<v.size();i++)cout<<v[i].x<<" "<<v[i].y<<" "<<v[i].l<<" "<<v[i].r<<endl;return 0;
}

RC-u3 战利品分配

题目描述:
RC-u3 战利品分配
在某个战争游戏中,多个玩家组成一个大型军团,攻下若干城池,并获得战利品。

具体而言,游戏中有 N 个城市,并以 M 条长度为 1 的无向道路连接,玩家们组成的军团从 S 号城市开始进攻,目的地是 T 号城市,每个城市攻下后的战利品价值为 pi。

为了合理地分配战利品,军团们定下了规矩:假设军团里有 K 位玩家,那么从 S 号城市开始,第 1 个攻下的城市分配给第 1 位玩家,第 2 个攻下的分配给第 2 位玩家,……,第 K 个攻下的分配给第 K 位玩家,第 K+1 个攻下的则重新开始计算,分配给第 1 位玩家,以此类推。

军团很强,路上所有的城市都可以轻松进攻下来。你作为军团的指挥,可以指定玩家的进攻路线。但玩家们都希望尽快结束游戏,因此 S 到 T 的距离必须是最短的。你需要做的是在最短距离的限制下选择对自己最好的线路,获得尽可能高的战利品价值。请输出你的答案。

输入格式:
输入第一行是四个数 N,M,K,P (1≤N,M≤10^5, 1≤K≤10^4,1≤P≤K),表示城市数量(于是城市从 1 到 N 编号)、连接道路数量以及你在军团中的 K 位玩家中排第 P 位(即你战利品分配在第 P 位)。

第二行是 N 个被空格隔开的非负整数,第 i 个数对应 pi(0≤pi≤10^4),表示编号为 i 的城市的战利品价值(i=1,⋯,N)。

然后的 M 行,每行给出两个用空格分隔的正整数 U 和 V,表示编号为 U 和 V 的城市之间有道路连接。

最后的一行是两个正整数 S,T,表示开始的城市编号与目的地的城市编号。开始和目的地的城市也是可以进攻并获取战利品的。

输出格式:
输出一行,表示你可以取得的最大价值。

输入样例:

9 11 2 2
100 150 130 50 30 20 200 0 70
1 2
1 3
2 3
2 4
2 5
3 6
4 7
5 7
6 8
7 9
8 9
1 9

输出样例:

350

代码实现:

#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
#define int long long
typedef pair<int,int>PII;
const int N=1e5+5,M=2*N;
int h[N],e[M],ne[M],idx;
int dist[N],vis[N],val[N],S,T,res[N],k,p;
void add(int x,int y){e[idx]=y,ne[idx]=h[x],h[x]=idx++;
}
void dijkstra(int x){priority_queue<PII,vector<PII>,greater<PII>>q;memset(dist,0x3f,sizeof dist);dist[x]=0;q.push({0,x});while(q.size()){int s=q.top().second;q.pop();if(vis[s])continue;vis[s]=1;for(int i=h[s];~i;i=ne[i]){int j=e[i];if(dist[j]>dist[s]+1){dist[j]=dist[s]+1;if((dist[j]+1)%k==p%k)res[j]=res[s]+val[j];else res[j]=res[s];q.push({dist[j],j});}else if(dist[j]==dist[s]+1){if((dist[j]+1)%k==p%k){if(res[s]+val[j]>res[j]){res[j]=res[s]+val[j];}}else res[j]=max(res[s],res[j]);}}}
}
signed main(){int n,m;cin>>n>>m>>k>>p;for(int i=1;i<=n;i++)cin>>val[i];memset(h,-1,sizeof h);while(m--){int x,y;cin>>x>>y;add(x,y);add(y,x);}cin>>S>>T;dijkstra(S);//dijkstra过程并没有对第一个点进行判断,故第一个点需要特判if(p==1)res[T]+=val[S];cout<<res[T]<<endl;return 0;
}

RC-u5 养老社区

题目描述:
RC-u5 养老社区
作为智能看护的一部分,你需要评估某个养老社区是否适合开展智能看护的服务。

这个养老社区有若干幢住宅楼,每个住宅楼有一个种类,住宅楼之间由长度为 1 的道路连接,道路都是双向道路且没有构成环 —— 你可以简单地认为养老社区的路构成了一棵树。

假设我们能找到三个住宅楼,这三个住宅楼两两之间的最短距离相等,并且三个住宅楼的种类不一样,那么我们称这三个住宅楼组成的三元组为适合智能看护的,指的是为了服务这三个住宅楼,我们可能可以方便地找到适合建设服务中心的地方。一个社区的适合度指的是能够找到多少本质不同的适合智能看护的住宅楼三元组。

本质不同两个的三元组指的是:三元组内元素任意排列后,两个三元组仍然不相等。

给定这个养老社区的情况,请你求出这个社区的适合度。

输入格式:
输入第一行是一个正整数 N (1≤N≤2×10^3),表示养老社区里住宅楼的数量(于是住宅楼从 1 到 N 编号)。

接下来 N−1 行,每行给出空格分隔的两个正整数 U 和 V,表示编号为 U 和 V 的住宅楼之间有一条长度为 1 的道路。
最后一行给出 N 个数,第 i 个数表示编号为 i 的住宅楼的种类为 Ti(1≤Ti≤N)。

保证给定的数据会将所有住宅楼连接成一棵完整的树。

输出格式:
输出一行一个正整数,表示社区的适合度。

输入样例:

11
1 2
1 3
1 4
2 5
2 6
3 7
3 8
4 9
4 10
1 11
1 2 3 4 5 6 7 8 9 9 10

输出样例:

14

代码实现:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2020;vector<int> G[maxn];
int n, t[maxn];int vis[maxn], e[maxn][maxn];
void bfs(int x){queue<int> q;q.push(x);vis[x] = 1;while(q.size()){int u = q.front();q.pop();for(int to : G[u]){if(vis[to])continue;vis[to] = 1;e[x][to] = e[x][u]+1;q.push(to);}}
}int main(){cin >> n;for(int i = 1; i < n; i++){int u ,v ; cin>>u>>v;G[u].push_back(v);G[v].push_back(u);}for(int i = 1; i <= n; i++) cin >> t[i];// bfs求任意2节点距离for(int i = 1; i <= n; i++){for(int j = 1; j <= n; j++) vis[j] = 0;bfs(i);}// 枚举3个节点int cnt = 0;for(int i = 1; i <= n; i++){for(int j = i+1; j <= n; j++){for(int k = j+1; k <= n; k++){// 判断距离 注意由于数据量 这里的条件不能交换if(e[i][j]==e[j][k] && e[i][j]==e[i][k]){// 判断类型if(t[i]!=t[j] && t[i]!=t[k] && t[j]!=t[k]){cnt++;}}}}}cout << cnt << endl;return 0;
}

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

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

相关文章

没有进度管理的项目,都是在做无用功

在项目管理过程中&#xff0c;最大的挑战之一是确保项目实施与计划保持一致。 项目实施过程是一个相对漫长的过程&#xff0c;其中受到许多因素的影响。如果项目实施没有按照原始项目计划进行&#xff0c;很容易导致项目偏离计划&#xff0c;最终可能导致项目停滞或失败。 当…

Maven出现报错 ; Unable to import maven project: See logs for details错误的多种解决方法

问题现象; IDEA版本&#xff1a; Maven 版本 &#xff1a; 3.3.9 0.检查 maven 的设置 &#xff1a;F:\softeware\maven\apache-maven-3.9.3\conf 检查setting.xml 配置 本地仓库<localRepository>F:\softeware\maven\local\repository</localRepository>镜像…

使用 Python 和 Flask 构建简单的 Restful API 第 1 部分

一、说明 我将把这个系列分成 3 或 4 篇文章。在本系列的最后&#xff0c;您将了解使用flask构建 restful API 是多么容易。在本文中&#xff0c;我们将设置环境并创建将显示“Hello World”的终结点。 我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文…

Activiti7

文章目录 概述入门案例1.创建springboot项目pom.xml 2.获取ProcessEngine2.1 默认的方式2.2 编程方式获取2.3 表结构介绍 3.在线流程设计器 概述 官网地址&#xff1a;https://www.activiti.org/ Activiti由Alfresco软件开发&#xff0c;目前最高版本Activiti 7。是BPMN的一个…

Flutter iOS 集成使用 flutter boost

在 Flutter项目中集成完 flutter boost&#xff0c;并且已经使用了 flutter boost进行了路由管理&#xff0c;这时如果需要和iOS混合开发&#xff0c;这时就要到 原生端进行集成。 注意&#xff1a;之前建的项目必须是 Flutter module项目&#xff0c;并且原生项目和flutter m…

bigemap如何添加高清在线地图?

说明&#xff1a;批量添加可以同时添加多个在线地图&#xff0c;一次性添加完成&#xff08;批量添加无法验证地址是否可以访问&#xff09; 添加后如下图&#xff1a; 第一步 &#xff1a; 制作地图配置文件&#xff1a;选择添加在线地图&#xff08;查看帮助&#xff09;。 …

Chatgpt AI newbing作画,文字生成图 BingImageCreator 二次开发,对接wxbot

开源项目 https://github.com/acheong08/BingImageCreator 获取cookie信息 cookieStore.get("_U").then(result > console.log(result.value)) pip3 install --upgrade BingImageCreator import os import BingImageCreatoros.environ["http_proxy"]…

基于 yolov8 的人体姿态评估

写在前面 工作中遇到&#xff0c;简单整理博文内容为使用预训练模型的一个预测 Demo测试图片来源与网络,如有侵权请告知理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停…

华为认证 | 云计算HCIE3.0改版后有什么变化?

随着技术的不断进步和行业的发展&#xff0c;云计算的HCIE作为华为公司的顶级认证&#xff0c;也进行了版本的更新。 那改版后有哪些变化呢&#xff0c;今天给大家讲讲。 01 HCIE认证简介 HCIE认证是华为公司旗下的顶级专业认证&#xff0c;面向IT领域的高级专业人士。 它涵…

收集到大量的名片怎么转为excel?

来百度APP畅享高清图片 参加完展会或集体会议&#xff0c;是不是收了一大堆名片&#xff0c;保管起来超级麻烦&#xff0c;还容易丢三落四&#xff1f;别急&#xff0c;我们有办法&#xff01;把名片转成电子版保存到电脑上就完美啦&#xff01;但要是名片数量有点多&#xff0…

ChatGPT应用在AIGC内容生产【赠书活动|第一期《硅基物语》】

文章目录 爆火的AI工具ChatGPT走入大众视野的AIGCAIGC领域的发展AIGC价值引领『赠书活动 &#xff5c; 第一期』 爆火的AI工具ChatGPT 2023年伊始&#xff0c;ChatGPT就火遍全网&#xff0c;成为了全球最快拥有1亿月活用户的产品。在地铁上、电梯中、咖啡厅到处都充满着讨论AI…

五、PC远程控制ESP32 LED灯

1. 整体思路 2. 代码 # 整体流程 # 1. 链接wifi # 2. 启动网络功能(UDP) # 3. 接收网络数据 # 4. 处理接收的数据import socket import time import network import machinedef do_connect():wlan = network.WLAN(network.STA_IF)wlan.active(True)if not wlan.isconnected(…

【BI系统】选型常见问题解答二

本文主要总结BI系统选型过程中遇见的常见问题&#xff0c;并针对性做出回答&#xff0c;希望能为即将选型&#xff0c;或正在选型BI系统的企业用户们提供一个快速了解通道。 有针对金蝶云星空的BI方案吗&#xff1f;能起到怎样的作用&#xff1f; 答&#xff1a;奥威BI系统拥…

Nevron Vision for .NET Crack

Nevron Vision for .NET Crack NET Vision是一个用于创建具有数据可视化功能的强大数据表示应用程序的套件。该套件具有用于.NET的Nevron Chart、用于.NET的Nevron Diagram和用于.NET的Nevron User Interface。精心设计的对象模型、众多功能和高质量的演示使复杂数据的可视化变…

【MySQL】

这里写目录标题 MySQL架构一条sql执行流程MySQL数据存放电脑位置ibd文件结构行溢出是什么MySQL行记录存储格式 MySQL架构 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层 Server层 Server 层主要负责建立连接、分析和执行 SQL。MySQL 里大多数的核心功能模块都在这实…

python机器学习(七)决策树(下) 特征工程、字典特征、文本特征、决策树算法API、可视化、解决回归问题

决策树算法 特征工程-特征提取 特征提取就是将任意数据转换为可用于机器学习的数字特征。计算机无法直接识别字符串&#xff0c;将字符串转换为机器可以读懂的数字特征&#xff0c;才能让计算机理解该字符串(特征)表达的意义。 主要分为&#xff1a;字典特征提取(特征离散化)…

Grafana V10 告警推送 邮件

最近项目建设完成&#xff0c;一个城域网项目&#xff0c;相关zabbix和grafana展示已经完&#xff0c;想了想&#xff0c;不想天天看平台去盯网络监控平台&#xff0c;索性对告警进行分类调整&#xff0c;增加告警的推送&#xff0c;和相关部门的提醒&#xff0c;其他部门看不懂…

Qt应用开发(基础篇)——时间微调输入框QDateTimeEdit、QDateEdit、QTimeEdit

一、前言 QAbstractSpinBox是全部微调输入框的父类&#xff0c;这是一种允许用户通过点击上下箭头按钮或输入数字来调整数值的图形用户界面控件&#xff0c;父类提供了当前值text、对齐方式align、只读readOnly等通用属性和方法。在上一篇数值微调输入框中有详细介绍。 QDateTi…

嘉楠勘智k230开发板上手记录(三)--K230_GPU应用实战

按照K230_GPU应用实战.md 一、开发环境的准备 在src下创建文件夹&#xff0c;并在文件夹中创建Makefile mkdir my_vglite_code cd my_vglite_codeMakefile # SDK地址 K230SDK ? /root/k230/k230_sdk-main # 生成的可执行文件名字 BIN : test-vglite# 指定交叉编译器 CC : …

python-爬虫作业

# -*- coding:utf-8 -*-Author: 董咚咚 contact: 2648633809qq.com Time: 2023/7/31 17:02 version: 1.0import requests import reimport xlwt from bs4 import BeautifulSoupurl "https://www.dygod.net/html/gndy/dyzz/" hd {user-Agent:Mozilla/4.0 (Windows N…