头歌资源库(29)流水线最优调度

一、 问题描述

二、算法思想    

       这是一个经典的作业调度问题,可以使用动态规划来解决。

       首先,我们可以将每个任务定义为一个节点,图中的边表示任务的先后顺序。根据题目的要求,每个任务必须先在印刷车间进行印刷,然后再到装订车间进行装订。因此,我们可以将任务之间的先后关系表示为一个有向无环图(DAG)。

       接下来,我们定义一个dp数组,dp[i]表示完成前i个任务所需的最少时间。那么,我们可以得到状态转移方程如下: dp[i] = max(dp[j]) + t[i][1] + t[i][2],其中j<i,t[i][1]表示任务i在印刷车间所需的时间,t[i][2]表示任务i在装订车间所需的时间。

       最后,我们需要找出dp数组中的最大值,即为完成所有任务所需的最少时间。

三、代码实现    

#include <stdio.h>
int wk[10000], work[10000][3];
int mini[3], n;
void Findmi(){int i;for(i = 0; i < n; i++){if(!work[i][2]){if(work[i][0] < mini[0]){mini[0] = work[i][0];mini[1] = 0;mini[2] = i;}if(work[i][1] < mini[0]){mini[0] = work[i][1];mini[1] = 1;mini[2] = i;}}}work[mini[2]][2] = 1;
}
int Time(){int i = 0, j = 0, k = 0, v = 0;for(;j < n; j++){i = k;while(work[wk[j]][0]--)i++;k = i;if(v < k)  v = k;i = v;while(work[wk[j]][1]--)i++;v = i;}return i;
}
int main(){int i, k, g;int m;while(scanf("%d", &n) != EOF&&n){m = n; for(i = 0; i < n; i++){scanf("%d%d", work[i]+0, work[i]+1);work[i][2] = 0;}for(k = 0,g = n-1;m > 0; m--){mini[0] = 100000000;Findmi();if(!mini[1]){wk[k] = mini[2];k++;}else{wk[g] = mini[2];g--;}}printf("%d\n", Time());}return 0;
}

执行结果 

 结语   

失败并不可怕

可怕的是你从未尝试过

!!!

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

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

相关文章

prometheus+grafana应用监控配置

配置Prometheus 官方地址&#xff1a;Download | Prometheus &#xff08;wegt下载压缩包&#xff0c;解压并重命名prometheus&#xff0c;文件放于/data/prometheus即可&#xff09; 配置 service方法(文件放于 /etc/systemd/system/prometheus.service)&#xff1a; [Unit…

k8s(四)---node

四、node node就是节点 1.查看node&#xff08;查询集群状态&#xff09; kubectl get no状态为kubec Ready 可以查看更多信息&#xff1a;-owide kubectl node -owide node没有命名空间隔离&#xff0c;所以node不需要指定命名空间 此处是一个master节点、两个worker节点、状态…

Neo4j:图数据库的革命性力量

Neo4j 首席技术官 prathle 撰写了一篇出色的博文&#xff0c;总结最近围绕 GraphRAG 的热议、我们从一年来帮助用户使用知识图谱 LLM 构建系统中学到的东西&#xff0c;以及我们认为该领域的发展方向。Neo4j一时间又大火起来&#xff0c;本文将带你快速入门这神奇的数据库。 前…

NLP之词的重要性

文章目录 何为重要词TF*IDFTF*IDF其他版本TFIDF 算法特点TF*IDF的优势TF*IDF劣势 TF*IDF的应用搜索引擎文本摘要文本相似度计算 上一篇文章介绍了新词的发现&#xff0c;用内部凝固度和左右熵来发现新词。这时候机器对一篇文章有了对词的一定理解&#xff0c;这时我们让机器上升…

Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用

目录 开始 Prometheus 介绍 基本原理 组件介绍 下文部署组件的工作方式 Prometheus 生态安装&#xff08;Mac&#xff09; 安装 prometheus 安装 grafana 安装 node_exporter Prometheus 生态安装&#xff08;Docker&#xff09; 安装 prometheus 安装 Grafana 安装…

STM32之六:SysTick系统滴答定时器

目录 1. SysTick简介 2. 时钟来源 3. SysTick寄存器 3.1 CTRL—SysTick控制及状态寄存器 3.2 RELOAD—SysTick重装载数值寄存器 3.3 CURRENT—SysTick当前数值寄存器 4. systick系统定时器配置 5. 延时函数实现 5.1 延时函数编写步骤 5.2 微秒级延时函数delay_us 5.…

JVM:运行时数据区

文章目录 一、总览二、程序计数器1、介绍2、程序计数器在运行中会出现内存溢出吗&#xff1f; 三、栈1、介绍2、栈帧的组成部分&#xff08;1&#xff09;局部变量表&#xff08;2&#xff09;操作数栈&#xff08;3&#xff09;帧数据&#xff08;3&#xff09;栈内存溢出&…

2、ASPX、.NAT(环境/框架)安全

ASPX、.NAT&#xff08;环境/框架&#xff09;安全 源自小迪安全b站公开课 1、搭建组合&#xff1a; WindowsIISaspxsqlserver .NAT基于windows C开发的框架/环境 对抗Java xx.dll <> xx.jar 关键源码封装在dll文件内。 2、.NAT配置调试-信息泄露 功能点&#xf…

zigbee开发工具:3、驱动安装与程序下载(更新中...)

zigbee开发工具前两篇讲解了IAR开发工具的安装与注册&#xff0c;还介绍了新建一个cc2530开发工程的建立与配置。在进行zigbee开发&#xff0c;代码编写编译好后还需要下载到zigbee节点设备上进行调试与验证&#xff0c;那么就需要安装SmartRF Flash Programmer软件 和仿真器等…

【LabVIEW学习篇 - 6】:数组、簇

文章目录 数组创建数组数组函数数组大小 根据索引取值数组与for循环 案例一案例二 簇LabVIEW簇的特点和用途&#xff1a;创建簇解除捆绑按名称解除捆绑簇的捆绑重新排序簇中控件 数组 在LabVIEW中&#xff0c;数组是一种用于存储相同数据类型的多个元素的数据结构。以下是关于…

【BUG】Python3|COPY 指令合并 ts 文件为 mp4 文件时长不对(含三种可执行源代码和解决方法)

文章目录 前言源代码FFmpeg的安装1 下载2 安装 前言 参考&#xff1a; python 合并 ts 视频&#xff08;三种方法&#xff09;使用 FFmpeg 合并多个 ts 视频文件转为 mp4 格式 Windows 平台下&#xff0c;用 Python 合并 ts 文件为 mp4 文件常见的有三种方法&#xff1a; 调用…

HarmonyOS NEXT:一次开发,多端部署

寄语 这几年特别火的uni-app实现了“一次开发&#xff0c;多端使用”&#xff0c;它这个端指的是ios、安卓、各种小程序这些&#xff0c;而HarmonyOS NEXT也提出了“一次开发&#xff0c;多端部署”&#xff0c;而它这个端指的是终端设备&#xff0c;也就是我们的手机、平板、电…

MySQL-MySQL数据类型

文章目录 〇. 数据类型分类一、整形1. tinyint [unsigned]2. bit[(M)] 二、浮点数类型float[(m, d)] [unsigned]decimal(m, d) [unsigned] 三、字符串类型1.char(L)2.varchar(L) 四、日期类型五、enum和set查询enum和set 总结 〇. 数据类型分类 一、整形 整形我们今天只讲两个…

整洁架构SOLID-接口隔离原则(ISP)

文章目录 定义ISP与编程语言ISP与软件架构小结 定义 在上图中有多个用户需要操作OPS类。现在&#xff0c;我们假设这里的User1只需要使用op1,User2只需要使用op2,User3只需要使用op3。 在这种情况下&#xff0c;如果OPS类是用Java编程语言编写的&#xff0c;那么很明显&#x…

对B-树的理解

目录 前言-为什么要使用B-树&#xff1f;B-树概念 前言-为什么要使用B-树&#xff1f; 首先&#xff0c;我们正常的搜索都有一下方式&#xff1a; 搜索二叉树&#xff0c;极端场景下会退化&#xff0c;类似于单支&#xff0c;此时的效率变成了O(N)&#xff1b;为了解决1的问题…

spring boot(学习笔记第十三课)

spring boot(学习笔记第十三课) Spring Security的logout&#xff0c;传统后端开发模式和前后端分离模式的不同&#xff0c;invalidateHttpSession不好用&#xff0c;bug&#xff1f; 学习内容&#xff1a; 传统后端开发模式 vs 前后端分离模式Spring Security的logout功能 1.…

最新 Kubernetes 集群部署 + Containerd容器运行时 + flannel 网络插件(保姆级教程,最新 K8S 1.28.2 版本)

资源列表 操作系统配置主机名IP所需插件CentOS 7.92C4Gk8s-master192.168.60.143flannel-cni-plugin、flannel、coredns、etcd、kube-apiserver、kube-controller-manager、kube-proxy、 kube-scheduler 、containerd、pause 、crictlCentOS 7.92C4Gk8s-node01192.168.60.144f…

Python 实现股票指标计算——BOLL布林线

1 公式 中轨线 N日的移动平均线&#xff0c;N一般取20 上轨线 中轨线 X倍的标准差&#xff0c;X一般取2 下轨线 中轨线&#xff0d;Y倍的标准差&#xff0c; Y一般取2 2 数据准备 我们以科创50指数 000688 为例&#xff0c;指数开始日期为2019-12-31&#xff0c;数据格…

强化学习:bellman方程求解state value例题

最近在学习强化学习相关知识&#xff0c;强烈推荐西湖大学赵世钰老师的课程&#xff0c;讲解的非常清晰流畅&#xff0c;一路学习下来令人身心大爽&#xff0c;感受数学抽丝剥茧&#xff0c;化繁为简的神奇魅力。 bellman方程还是比较容易理解的&#xff1a;当前状态下的state …

java Web学习笔记(三)

文章目录 1. 前置知识2. Vue使用vite构建项目SFC入门使用ref和.value体会响应式数据&#xff08;使用ES6和setup&#xff09; 3. Vue视图渲染技术及其语法模板语法&#xff1a;命令插值表达式渲染双标><中的文本&#xff08;还挺可爱&#xff09;属性渲染命令事件渲染命令…