头歌资源库(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,一经查实,立即删除!

相关文章

AWS S3 基本概念

AWS S3 基本概念 引言什么是 AWS S3S3 应用S3 的核心概念 引言 最近工作中有接触到 S3&#xff0c;往 S3 写入数据&#xff0c;从 S3 访问数据&#xff0c;所以花点时间整理一下有关 S3 的基本概念。 什么是 AWS S3 AWS S3 (Amazon Simple Storage Service) 是一个由 Amazon…

Node.js配置CORS跨域(解决服务器api接口跨域问题)

一、安装cors npm install cors 二、在接口文件中使用cors const express require(express); const cors require(cors); // 引入 cors 中间件 const app express(); const port 3000;app.use(cors()); // 使用 cors 中间件const catList [{image: https://131703669…

prometheus+grafana应用监控配置

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

前端面试题日常练-day86 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 以下哪个HTML标签用于定义一个内联框架&#xff0c;用于嵌入其他网页&#xff1f; a) <frame> b) <iframe> c) <div> d) <section> 在JavaScript中&#xff0c;以下哪个方法…

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;本文将带你快速入门这神奇的数据库。 前…

Spring Boot项目的控制器貌似只能get不能post问题

我这2天新建了一个Spring Boot项目测试&#xff0c;在控制器上写了两个接口&#xff0c;一个是支持Get方式访问&#xff0c;另一个支持Post方式访问&#xff0c;发现Get可以&#xff0c;而Post不行。前端Post后&#xff0c;报403&#xff0c;找不到这个方法。 一、原因 原因是…

Flutter框架时间线梳理

Flutter是一个开源的UI工具包&#xff0c;它用于构建高质量的原生移动应用。Flutter的版本历史如下&#xff1a; Flutter 0.1.2&#xff1a; 2018年发布&#xff0c;这是第一个正式发布的版本&#xff0c;包含了基本的框架和工具。 Flutter 1.0.0&#xff1a; 2019年发布&…

ubuntu 物理内存爆炸而不使用虚拟内存的问题

ubuntu 物理内存不足时有时候会不去使用虚拟内存&#xff0c;让虚拟内存空闲&#xff0c;而直接关闭占用内存的进程&#xff0c;如果在进行模型测试或训练时&#xff0c;就会导致训练或测试进程被杀死。 1. 修改 swappiness&#xff1a; cat /proc/sys/vm/swappiness sudo sysc…

NLP之词的重要性

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

C语言阶乘(只用逻辑运算中的短路效应判断)

目录 开头程序程序的流程图程序输入与输出的效果例1输入输出 例2输入输出 例3输入输出 结尾 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们要来看我做的只用逻辑运算中的短路效应判断的用C语言编译出来的阶乘计算程序。 程序 #define _CRT_SECURE_NO_WARNINGS…

Selenium 元素操作 WebElement 对象

通过 find_element() 方法找到的元素对象就是 WebElement 类型。clear(): 清除文本 send_keys(value): 模拟按键输入 click(): 单击元素 submit()&#xff1a; 提交表单(有些不提供搜索按钮&#xff0c;通过键盘上的回车键完成提交&#xff0c;可以通过 submit 模拟) size: 获…

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…

【PHP】Symfony框架

Symfony框架 Symfony是一个用于PHP的开放源代码框架&#xff0c;旨在简化PHP应用程序的开发过程。它由Fabien Potencier和他的团队开发&#xff0c;并在2005年首次发布。Symfony的设计目标是提供一种灵活、可重用和可扩展的方法来构建Web应用程序。 起源 Symfony的起源可以追…

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; 调用…