当前位置: 首页 > news >正文

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

目录

RC-u1 智能红绿灯

RC-u2 女王的大敕令

RC-u3 战利品分配

RC-u5 养老社区


RC-u1 智能红绿灯

模拟题。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;int main()
{int n;cin>>n;vector<int> v(n);for(auto &t:v) cin>>t;vector<pair<int,int>> res;int l=v[0]+15,r=v[0]+44;int cnt=0;for(int i=1;i<n;i++){if(v[i]>r){cnt=0;res.push_back({l,r});l=v[i]+15,r=v[i]+44;}else if(v[i]>=l&&v[i]<=r){if(!cnt){cnt=1;r+=15;}}}res.push_back({l,r});for(auto [a,b]:res) cout<<a<<' '<<b<<endl;
}

RC-u2 女王的大敕令

数据量太小了,直接爆搜。

#include<iostream>
#include<algorithm>
#include<set>
#include<map>
using namespace std;int d[4];
int c1,c2,r1,r2;
int ex,ey,d1,d2;
int k,xx,yy,sx,sy;
int ne[4][2]={{1,-1},{1,1},{-1,1},{-1,-1}};
map<pair<int,int>,set<pair<int,int>>> mp;
struct node{int x1,y1,x2,y2;
}tr[100000];
bool ok(int x,int y)
{if(x>=1&&x<=5&&y>=1&&y<=5) return true;return false;
}
void dfs(int x,int y,int cnt)
{if(cnt==1){int dong=r2+d[3];int xi=r1-d[2];if(x==dong||xi==x||y==c1||y==c2) return ;for(int i=0;i<=d1;i++){int j=d1-i;for(int jj=0;jj<4;jj++){int xx=x+ne[jj][0]*i,yy=y+ne[jj][1]*j;if(ok(xx,yy))dfs(xx,yy,2);}}}else if(cnt==2){int dong=r2+d[3];int xi=r1-d[2];int nan=c2-d[1];int bei=c1+d[0];//   cout<<x<<' '<<y<<endl;if(x==dong||x==xi||y==nan||y==bei) return ;for(int i=0;i<=d2;i++){int j=d2-i;for(int jj=0;jj<4;jj++){int xx=x+ne[jj][0]*i,yy=y+ne[jj][1]*j;if(ok(xx,yy)&&xx==ex&&ey==yy){mp[{sx,sy}].insert({x,y});}}}}
}
int main()
{cin>>c1>>c2>>r1>>r2;for(int i=0;i<4;i++) cin>>d[i];cin>>ex>>ey>>d1>>d2;for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){//  cout<<"----"<<sx<<' '<<sy<<endl;sx=i,sy=j;dfs(i,j,1);}}#define fi first#define se secondfor(auto [a,b]:mp){for(auto [a1,b1]:b)tr[k++]={a.fi,a.se,a1,b1};}sort(tr,tr+k,[](node a,node b){return a.x1<b.x1||(a.x1==b.x1&&a.y1<b.y1);});for(int i=0;i<k;i++)cout<<tr[i].x1<<' '<<tr[i].y1<<' '<<tr[i].x2<<' '<<tr[i].y2<<endl;
}

RC-u3 战利品分配

PTA就是喜欢考这类很板的条件判断Dijkstra

#include<iostream>
#include<vector>
#include<queue>
#include<algorithm>
#include<array>
#define int long long
using namespace std;
using aii=array<int,4>;
const int N = 1e5+5;vector<int> e[N];
int p[N];
int K,P,n,m,s,d;
int ma[N];
int maxn;void Dijkstra()
{vector<int> dist(n+1,1e18);dist[s]=0;priority_queue<aii,vector<aii>,greater<aii>> heap;ma[s]=p[s];heap.push({0,(P==1?p[s]:0),1,s});while(heap.size()){auto [dis,sum,cnt,t]=heap.top();heap.pop();if(dist[t]<dis) return ;if(t==d){if(dist[t]<dis) return ;if(dist[t]==dis){if(maxn<sum) maxn=sum;}}cnt=(cnt+1)%K;if(cnt==0) cnt=K;for(int j:e[t]){if(dist[j]>dis+1){dist[j]=dis+1;int sum1=sum;if(cnt==P) sum1=sum+p[j];ma[j]=sum1;heap.push({dist[j],sum1,cnt,j});}else if(dist[j]==dis+1){int sum1=sum;if(cnt==P) sum1=sum+p[j];if(sum1>ma[j]){ma[j]=sum1;heap.push({dist[j],sum1,cnt,j});}}}}}
int32_t main()
{cin>>n>>m>>K>>P;for(int i=1;i<=n;i++) cin>>p[i];for(int i=1;i<=m;i++){int a,b;cin>>a>>b;e[a].emplace_back(b);e[b].emplace_back(a);}cin>>s>>d;Dijkstra();cout<<maxn;
}

RC-u5 养老社区

先用bfs算出任意两点之间的距离,再枚举三个点看是否满足距离相等,本质不同。

#include<iostream>
#include<queue>
#include<cstring>using namespace std;const int N = 2005;int dist[N][N],t[N];
bool st[N];
int n;
vector<int> e[N];void bfs(int s)
{queue<int> q;q.push(s);while(q.size()){auto it=q.front();q.pop();for(auto v:e[it]){if(!dist[s][v]){dist[s][v]=dist[s][it]+1;q.push(v);}}}
}
int main()
{cin>>n;for(int i=1;i<n;i++){int a,b;cin>>a>>b;e[a].push_back(b);e[b].push_back(a);}for(int i=1;i<=n;i++) cin>>t[i];for(int i=1;i<=n;i++){memset(st,false,sizeof st);bfs(i);}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(dist[i][j]==dist[j][k]&&dist[i][j]==dist[i][k]){if(t[i]!=t[j]&&t[i]!=t[k]&&t[k]!=t[j])cnt++;}}cout<<cnt;
}

http://www.xdnf.cn/news/1265941.html

相关文章:

  • 前端工程化:从构建工具到性能监控的全流程实践
  • 2G内存的服务器用宝塔安装php的fileinfo拓展时总是卡死无法安装成功的解决办法
  • Ubuntu下搭建LVGL模拟器
  • 【第2.1话:基础知识】基于Ubuntu的ROS环境搭建与车辆可视化编程实践:初学者指南及RVIZ应用(含作业及代码)
  • Ubuntu Server 22 虚拟机空间扩容
  • ubuntu dpkg命令使用指南
  • 从零玩转Linux云主机:免费申请、连接终端、命令速查表
  • 【SQL进阶】用EXPLAIN看透SQL执行计划:从“盲写“到“精准优化“
  • 【JavaEE】(11) 前端基础三件套
  • 比亚迪第五代DM技术:AI能耗管理的深度解析与实测验证
  • 数学与应用数学:到底有啥区别?
  • Kafka学习记录
  • 建筑物实例分割数据集-9,700 张图片 城市规划与发展 灾害评估与应急响应 房地产市场分析 智慧城市管理 地理信息系统(GIS) 环境影响评估
  • Java安全-组件安全
  • 关于灰度图像相似度的损失函数(笔记)
  • C++安全异常设计
  • 华为交换机进阶功能和场景化配置
  • Javaweb - 14.1 - 前端工程化
  • day16 - CSS3新增属性
  • 利用whisper api实现若无字幕则自动下载音频并用 whisper 转写,再用 LLM 总结。
  • Blender 快捷键速查表 (Cheat Sheet)
  • 数据结构(9)——排序
  • 202506 电子学会青少年等级考试机器人二级理论综合真题
  • 本文章分享一个本地录音和实时传输录音给app的功能(杰理)
  • java10学习笔记
  • IntelliJ IDEA 新手全方位使用指南
  • 服务机器人选择屏幕的逻辑
  • 7、docker |其余命令
  • spring.config.import 不存在
  • Pytest中实现自动生成测试用例脚本代码