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

加工生产调度(Johnson算法)

问题:

场景:工厂有n个产品,必须按顺序在A车间和B车间加工(先A后B)

目标:安排产品加工顺序,使得从开始到所有产品加工完成的总时间最短

关键限制:B车间必须等A完成后才能开始加工同一产品

上面是一个例子

它是让A的最早加工产品地加工时间尽可能地少,也就相当于降序排列。

又让B的最早加工产品的加工时间尽可能地多,也就是相当于升序排序。

但是,它不仅仅是这样做的

它是把上面地数据分成了两组,A<B放一组,A>B的放一组

对于A<B这一组按照A进行降序排列

对于A>B这一组按照B进行升序排列

至于为什么这样可以达到调度最优的问题我还是没有理解。

	sort(arr.begin(),arr.end(),[](const vector<int>&a,const vector<int>&b){bool a_group1 = (a[0]<=a[1]); // a是否属于group1bool b_group1 = (b[0]<=b[1]); // b是否属于group1if(a_group1&&b_group1){return a[0]<b[0]; // a,b都在group1,Group1按A_i降序排列}else if(!a_group1&&!b_group1){return a[1]>b[1]; // a,b都不在group1,Group2按B_i升序排列}else{return a_group1; // Group1优先于Group2}});

总代码:

# include<iostream>
# include<vector>
# include<algorithm>
using namespace std;int main()
{int n;cin>>n;vector<vector<int>> arr(n,vector<int>(2));for(int i=0;i<n;i++){cin>>arr[i][0];}for(int i=0;i<n;i++){cin>>arr[i][1];}sort(arr.begin(),arr.end(),[](const vector<int>&a,const vector<int>&b){bool a_group1 = (a[0]<=a[1]); // a是否属于group1bool b_group1 = (b[0]<=b[1]); // b是否属于group1if(a_group1&&b_group1){return a[0]<b[0]; // a,b都在group1,Group1按A_i降序排列}else if(!a_group1&&!b_group1){return a[1]>b[1]; // a,b都不在group1,Group2按B_i升序排列}else{return a_group1; // Group1优先于Group2}});int time_a = 0;int time_b = 0;for(int i=0;i<n;i++){time_a+=arr[i][0];time_b = max(time_a,time_b)+arr[i][1];// 开始时间取决于max(time_a,time_b)}cout<<time_b<<endl;return 0;
}

题目:

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

相关文章:

  • vue vite textarea标签按下Shift+Enter 换行输入,只按Enter则提交的实现思路
  • 准备好,开始构建:由 Elasticsearch 向量数据库驱动的 Red Hat OpenShift AI 应用程序
  • 手写ES6 Promise() 相关函数
  • 怎么把https://github.com项目拉到自己的github
  • 在Ubuntu18.04下搭建SadTalker让图片开口说话
  • 第五章:异步幻境 · 时间与数据的秘密
  • STM32之温湿度传感器(DHT11)
  • 纯惯导(INS)的误差来源及其对静态漂移曲线的影响
  • SS928V100(Hi3403V100)----NNN推理引擎,AMCT-ONNX模型压缩量化踩坑记录(LINUX版)
  • 数据指标体系:企业数字化转型的“数字基因“革命
  • Even Split_CodeForces - 1666E分析与解答
  • 【三轴加速度计】QMA6100P数据手册解析
  • 基于RFSOC49DR-16收16发 PCIE4.0 X8 射频采集卡
  • 航电系统之云台检测技术篇
  • 5月22总结
  • 浅聊一下搭建企业私有知识库的可行方案
  • Springboot3
  • mapbox V3 新特性,实现三维等高线炫酷效果
  • Linux(Ubuntu)新建文件权限继承问题
  • MQTT-主题(Topic)
  • DeepSeek:以开源之力,引领AI技术新风潮
  • MySQL初阶:JDBC
  • 海盗王客户端创建角色遮罩层修改成自适应窗口尺寸
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.10)
  • QT入门基础
  • python训练营打卡第31天
  • 【C++】控制台小游戏
  • 【人工智能】低代码基础技术讲解,规则引擎,在低代码平台上的作用,有哪些规则引
  • 前端请求状态出现CORS错误
  • CarPlay有线连接流程