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

2023 RoboCom CAIP本科组决赛-RC-u3 兰州拉面派餐系统

1.题目

题目链接:RC-u3 兰州拉面派餐系统 - 2023 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(国赛) (pintia.cn)

2. 具体实现

模拟过程即可

2.1 普通方法

//模拟
#include<bits/stdc++.h>
using namespace std;
int times[10010];  //每种面需要的时间
int cus[100010];  //每个客户各自需要的时间 
int num[10010];  //记录每个篮子煮了多少次面 
int order[10010];  //记录每个篮子装的是哪位顾客的 
int shengy[10010];  //记录每个篮子面还需要多久 
map<int,int> p;  //存储出单次序+最小坐标 
vector<int> p1; //按照菜篮顺序 
int n,m,l;
int temp;
int getMin(){p.clear(); p1.clear(); int mi=0x3f3f3f3f;for(int i=1;i<=m;i++){if(shengy[i]!=0&&shengy[i]<mi)mi=shengy[i];}//找到最小值的坐标for(int i=1;i<=m;i++){if(mi==shengy[i]){p1.push_back(i);int o=order[i];  //记录是哪一位顾客的 p[o]=i; }}return mi; 
} 
//判断是否都煮好了 
bool judge(){for(int i=1;i<=m;i++){if(shengy[i]!=0)return false;}return true; 
}
int main(void){cin>>n>>m>>l;  //面的种类数、篮子个数for(int i=1;i<=n;i++){cin>>times[i];}for(int i=1;i<=l;i++){int t;cin>>t;cus[i]=times[t];}//初始化for(int i=1;i<=min(m,l);i++){order[i]=i;num[i]=1;shengy[i]=cus[i]; }int tim=min(m,l);  //表示已经煮了第几客单 //模拟int t=0;  //经过的时间 bool flag=true;  //false表示不是第一个 while(1){int minz=getMin();//p存储位置,找到位置,将值归为0,客单拿出来t+=minz;//所有剩余都要减去for(int i=1;i<=m;i++){if(shengy[i]!=0)shengy[i]-=minz;}//捞出 for(auto x:p){int o=x.first;  //次序(第几个客人) if(!flag) cout<<" ";flag=false; 
//			int z=x.second;  //坐标 cout<<o<<":"<<t;}//加面for(int i=0;i<p1.size();i++){if(tim<l){tim++;shengy[p1[i]]=cus[tim];order[p1[i]]=tim;num[p1[i]]++;}}if(judge()){break;} }cout<<endl;for(int i=1;i<=m;i++){if(i!=1) cout<<" ";cout<<num[i]; } return 0;
} 

2.2 使用优先队列

//捞面:每个篮子按时间短的先,如果时间相同,按篮子序号从小到大 
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
const int M=10010;
//第一个捞出的位置 
//时间最早,如果时间相同,捞出lanzi最小的面 
struct node{int lanzi;  //第几个篮子 int tt;     //需要的时间 int order;  //派单序号 bool operator<(const node& a) const{return tt==a.tt?lanzi>a.lanzi:tt>a.tt; } 
};
priority_queue<node> p;
int times[N];  //每种面所需要的时间
queue<pair<int,int> > q;  //客单顺序、面的种类 
vector<pair<int,int>> res; //编号、时间 
int num[M];  //记录篮子的使用次数 
int main(void){int n,m,l;cin>>n>>m>>l;for(int i=1;i<=n;i++){cin>>times[i];}for(int i=1;i<=l;i++){int t;cin>>t;q.push({i,t});}//模拟场景int cnt=1;  //用于分配的篮子编号 while(!q.empty()){auto z=q.front();q.pop();if(cnt<=m){  //表明还有空闲篮子 p.push({cnt,times[z.second],z.first}); num[cnt++]++; }else{//t就是我们捞出的地方 node t=p.top();p.pop();res.push_back({t.tt,t.order}); p.push({t.lanzi,t.tt+times[z.second],z.first});num[t.lanzi]++; } }while(p.size()){auto z=p.top();p.pop();res.push_back({z.tt,z.order});}sort(res.begin(),res.end());//输出结果for(int i=0;i<res.size();i++){if(i!=0) cout<<" ";cout<<res[i].second<<":"<<res[i].first;}cout<<endl;for(int i=1;i<=m;i++){if(i!=1) cout<<" ";cout<<num[i];} 	return 0;
} 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vulhub:Apache解析漏洞CVE-2017-15715
  • 计网:从输入URL到网页显示期间发生了什么
  • 打包python脚本(flask、jinja2)为exe文件
  • 【Unity】RPG2D龙城纷争(十九)流程与UI界面(终章)
  • Docker安装Nginx
  • fastapi教程(六):依赖注入
  • SpringSecurity+Mysql数据库实现用户安全登录认证
  • MySQL入门学习-运维与架构.主从复制
  • Shell 编程的高级技巧和实战应用
  • 《雅思口语真经总纲1.0》话题实战训练笔记part1——5. Bus or taxi
  • 等待唤醒机制两种实现方法-阻塞队列
  • 【OpenCV C++20 学习笔记】图像缩放-高斯金字塔
  • Stable Diffusion绘画 | 文生图-高分辨率修复-Hires.fix
  • 图的同态Graph Homomorphism与同构Graph Isomorphism
  • ESP IDF 4.4工程迁移到IDF5最新注意事项
  • [译] 怎样写一个基础的编译器
  • CEF与代理
  • Debian下无root权限使用Python访问Oracle
  • E-HPC支持多队列管理和自动伸缩
  • js如何打印object对象
  • js中forEach回调同异步问题
  • JS专题之继承
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PermissionScope Swift4 兼容问题
  • Rancher如何对接Ceph-RBD块存储
  • spring boot下thymeleaf全局静态变量配置
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • 第十八天-企业应用架构模式-基本模式
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 构造函数(constructor)与原型链(prototype)关系
  • 聚簇索引和非聚簇索引
  • 全栈开发——Linux
  • 如何使用 JavaScript 解析 URL
  • 如何在GitHub上创建个人博客
  • 微信公众号开发小记——5.python微信红包
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • # Maven错误Error executing Maven
  • (C++17) std算法之执行策略 execution
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (纯JS)图片裁剪
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (力扣题库)跳跃游戏II(c++)
  • (十八)三元表达式和列表解析
  • (转)http协议
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)我也是一只IT小小鸟
  • (转载)利用webkit抓取动态网页和链接
  • (轉貼) UML中文FAQ (OO) (UML)
  • .NET 8.0 发布到 IIS
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 流——流的类型体系简单介绍
  • .net反编译工具
  • .NET企业级应用架构设计系列之结尾篇