7-2 批处理作业调度 (10 分)(思路+详解)

一:题目:宝宝 你要永远开心,下雪了,多穿点,

在这里插入图片描述

输入格式:
第一行输入作业个数n。

第二行输入各任务在机器一上的完成时间。

第三行输入各任务在机器二上的完成时间。

输出格式:
最短完成时间和

输入样例:

3
2 3 2
1 1 3

结尾无空行
输出样例:

18

二:思路

分析题意:
题目是批量处理作业调度,那么我们可以得知,这是让我们完成一个作业之后再去完成另一个作业

思路:
1.姑且先给我们的作业边上序号 a,b,c三个作业,那么我们可以得知关于这三个作业的
的安排有6种方式,那么我们的问题就简单了,这是一个全排列问题
2.回归本题,我们知道了是全排列问题,我们可以通过回溯法穷举所有的可行解,然后在
根据可行解求出最优值
3.回溯版的全排列,其实这和分治法那个一样,都是递归求全排列,
<1>:递归函数的参数
backtecking(int n,vector &v)
int n:表示我们选择的是n个作业 从1,2,3…这样的序列我们来求取
vector &v:这里表示我们递归的时候记录哪些元素我们已经访问过
<2>:返回的结果
vector<vector > ans; 存放每次的可行结
vector path; 记录每次的可行解
<3>:横向for循环 和 纵向的递归深度

for(int i = level; i <= n; i++)

我们单层的for循环是遍历我们所有的(1,2,3…)
纵向的递归:我们选择的是不断缩小的我们遍历的范围

<4>:递归终止条件
path.size() == n时,这时我们的一种可行结果(就是我们的一种安排作业的顺序 比如1,2,3或则2,1,3)

4:对上方的所有可行解求出最优解

5:图解
在这里插入图片描述

三:上码


/**分析题意:题目是批量处理作业调度,那么我们可以得知,这是让我们完成一个作业之后再去完成另一个作业思路:1.姑且先给我们的作业边上序号 a,b,c三个作业,那么我们可以得知关于这三个作业的的安排有6种方式,那么我们的问题就简单了,这是一个全排列问题2.回归本题,我们知道了是全排列问题,我们可以通过回溯法穷举所有的可行解,然后在根据可行解求出最优值3.回溯版的全排列,其实这和分治法那个一样,都是递归求全排列,<1>:递归函数的参数backtecking(int n,vector<bool> &v)int n:表示我们选择的是n个作业 从1,2,3....这样的序列我们来求取  vector<bool> &v:这里表示我们递归的时候记录哪些元素我们已经访问过 		 <2>:返回的结果vector<vector<int> > ans; 存放每次的可行结 vector<int> path; 记录每次的可行解<3>:横向for循环 和 纵向的递归深度 for(int i = level; i <= n; i++)我们单层的for循环是遍历我们所有的(1,2,3...)纵向的递归:我们选择的是不断缩小的我们遍历的范围<4>:递归终止条件path.size() == n时,这时我们的一种可行结果(就是我们的一种安排作业的顺序 比如1,2,3或则2,1,3) 4:对上方的所有可行解求出最优解  	  		  	 
*/ #include<bits/stdc++.h>
using namespace std;vector<vector<int> > ans;
vector<int> path;void backtacking(int n,vector<bool> &v) {//递归终止的条件 if(path.size() == n){ans.push_back(path);return;}for(int i = 1; i <= n; i++) {if(v[i] == true) continue;v[i] = true;path.push_back(i);backtacking(n,v);//这里的level+1代表的是我们每次的遍历范围在变小 path.pop_back();//当我们得到一种可行解的时候,因为我们要回溯求取其他的解,所以清理最后装进容器的元素 v[i] = false;} 
}int main(){int N;vector<int>v1(100),v2(100); vector<bool> v3(100,false);vector<int>v4;//记录最后每种排列的所求时间和 cin >> N;for (int i = 1; i <= N; i++) { cin >> v1[i];}for (int i = 1; i <= N; i++) {cin >> v2[i];}  //cout << v1[1] << ' ' << v1[2] << ' ' << v1[3];backtacking(N,v3);//cout << endl;for (int i = 0; i < ans.size(); i++) {int sumTime1 = 0;int sumTime2 = 0; int sumTime3 = 0;//记录一种排列最后的完成总时间 for (int j = 0; j < N; j++){//cout << ans[i][j] << ' ';	// 1 2 3		int index = ans[i][j];sumTime1 += v1[index];//这里计算在机器1上的完成时间 sumTime2 = sumTime1; //因为在机器二上的完成时间需要在机器1上完成后才可记录 sumTime2 += v2[index];//这里记录在机器2上的完成时间 sumTime3 += sumTime2;//记录所有作业的完成时间和 }	v4.push_back(sumTime3);} 	sort(v4.begin(),v4.end());cout << v4[0];}

在这里插入图片描述

宝!我还得再唠叨一句 记得加油!!永远爱自己!!

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

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

相关文章

WindowsSdkDir 从何处来?

缘起 我在《修复被破坏的 vs 工程设置》和《修复被破坏的 vs 工程设置&#xff08;续&#xff09;》这两篇文章中&#xff0c;分享了调查 VS 包含路径错误的问题&#xff0c;感兴趣的小伙伴儿可以查看。依稀记得在 2013 年的时候调查过类似的问题。前一阵子没翻到&#xff0c;这…

7-3 符号三角形 (10 分)(思路+详解)

一&#xff1a;题目 Come 宝 &#xff01;&#xff01;&#xff01; 输入格式: 第一行符号个数n 输出格式: 符合要求的三角形个数 输入样例: 4结尾无空行 输出样例: 6二:思路 思路: 1.如果我们确立的第一行的符号是什么 &#xff0c;那么我们就可以基本上确定我们的符号三…

7-1 内存分区分配--首次适应算法 (100 分)

一&#xff1a;题目7-1 内存分区分配–首次适应算法 (100 分) 宝 今天你看我博客了吗 输入内存的大小和阈值minsize&#xff0c;按照首次适应算法进行连续的分区分配。在划分时&#xff0c;若剩余的内存小于等于minsize&#xff0c;则将整块内存分配给该进程不再进行划分。 根…

如何在生产环境下用好EFCore

原文链接&#xff1a;https://www.thereformedprogrammer.net/handling-entity-framework-core-database-migrations-in-production-part-2/作者&#xff1a;Jon P Smith在生产中运用EFCore的模式实战这是使用EF Core迁移数据库的系列文章中的第二篇。本文着眼于将迁移应用于数…

39. 组合总和020(思路+详解)

一&#xff1a;题目&#xff1a; 给定一个无重复元素的正整数数组 candidates 和一个正整数 target &#xff0c;找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。 candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同&#xff0c;则两种…

8种方法解决vue创建项目报错:command failed: npm install --loglevel error

8种方法解决vue项目创建失败问题1、重建项目2、清除缓存3、重装淘宝源4、修改useTaobaoRegistry5、重装node6、删除npmrc文件7、 node版本问题8、css编辑工具选择9、管理员身份运行踩了这个巨大的坑&#xff01;&#xff01; 试了一个晚上终于找到了创建项目成功了T_T 当报错了…

40. 组合总和 II021(回溯法)

一&#xff1a;题目 给定一个数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 注意&#xff1a;解集不能包含重复的组合。 示例 1:输入: candidates [10,1,2,…

.NET Core + Kubernetes:Helm

Helm[1] 作为 Kubernetes 体系的包管理工具&#xff0c;已经逐渐成为了应用分发标准&#xff0c;在 .NET 开发中&#xff0c;可以理解为与 NuGet 包类似。回顾之前文章中的介绍&#xff0c;Kubernetes 中单个服务的部署有时会涉及到多种资源类型&#xff0c;如&#xff1a;Depl…

vue项目中引入阿里图标iconfont

vue如何在创建好的项目中引入阿里图标iconfont呢&#xff0c;涉及到以下几个步骤&#xff1a; 1、首先先到阿里图标官方网站https://www.iconfont.cn/&#xff0c;先对账户进行登录&#xff0c;登录完成后任意选择几个图标加入购物车 2、加入购物车后&#xff0c;点击页面最右…

78. 子集022(回溯法)

一&#xff1a;题目 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;…

vue项目中使用vue-router进行路由配置及嵌套多级路由

在vue项目中&#xff0c;很多时候我们需要二级路由或者三级路由来跳转页面&#xff0c;但大部分需求下我们都只用到了二级路由&#xff0c;有小伙伴就会发现&#xff0c;用到三级路由的时候&#xff0c;就会突然不知所措&#xff0c;是有新的方法呢&#xff0c;还是跟二级路由配…

解决流氓软件方法(亲测有效)

一:问题描述 本来我想在百度上下载一个API文档&#xff0c;我当然知道是取官网上下载了&#xff0c;但是我想要的是中文版&#xff0c;所以我就搜啊搜&#xff0c;搜到脚本之家 &#xff0c;那里面可以下载&#xff0c;我记得以前在里面下载过东西&#xff0c;以为安全就去下载…

.NET Core:跨平台和开源,让我在框架中脱颖而出

自从 2016 年微软发布了 .NET Core 1.0&#xff0c;至今 4 年的时间里&#xff0c;.NET Core 历经 7 个正式版本和几十个 Preview 版本。.NET Core 作为最通用的框架&#xff0c;和其他软件框架不同的是&#xff0c;它面向 Windows、Linux 和 MacOS 多个平台&#xff0c;在桌面…

vue实现侧边折叠菜单栏手风琴效果

在我们做管理后台亦或是产品流程时&#xff0c;总是需要一个菜单栏或者导航栏来架起我们的产品架构&#xff0c;那么&#xff0c;如何用vue实现侧边折叠导航栏呢&#xff1f;接下来将一一介绍。 请先看效果演示图。 步骤1&#xff1a;先架构整个页面的布局&#xff0c;撰写html…

程序员过关斩将--解决分布式session问题

微信搜一搜架构师修行之路session 说到 session&#xff0c;我相信每个程序员都不陌生&#xff0c;或多或少在项目中使用过。session 这个词&#xff0c;其实是一个抽象的概念&#xff0c;它不像 Cookie 那样有着明确的定义。当大多数程序员谈论 session 的时候&#xff0c;可能…

如何将nodejs项目程序部署到阿里云服务器上

将nodejs项目程序部署到阿里云服务器上一、概述二、具体步骤1、拥有自己的服务器2、下载Xshell3、 oneinstack配置web环境4、 XShell连接远程主机5、更新系统软件6、在服务器上安装node环境7、部署项目到服务器上8、安装pm2并启动nodejs项目三、快捷指令1、linux的常用命令2、p…

101. 对称二叉树023(BFS)

一&#xff1a;题目 二&#xff1a;上码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullpt…

中移动完成透镜天线远距覆盖和降本增效试点

日前&#xff0c;中国移动研究院在官微上正式发布了《新型透镜天线进行首次高铁覆盖实验》一文。中国移动研究院、中国移动甘肃公司与西安海天天线科技股份有限公司联合开展的人工介质圆柱透镜天线在高铁、高速等线状纵深领域的长距覆盖取得突破性进展。两年以来&#xff0c;铁…

基于PHPEnv的本地环境搭建—PHP第一个项目:HelloWorld(从安装到运行)

1、安装软件 编程工具&#xff1a;Notepad 运行环境&#xff1a;phpEnv 2、用phpEnv建立本地运行环境 &#xff08;1&#xff09;官方下载phpEnv&#xff0c;运行phpEnv&#xff0c;启动服务。服务启动之后&#xff0c;apache和mysql变绿。如下图所示&#xff1a; &#xff0…

在idae中为什么用Module创建一个新的Maven项目的时候会被卡死

一:问题描述 然后就会卡死&#xff0c; 二&#xff1a;问题解决 我们会发现这里的路径是有问题的&#xff0c;idea自带的maven会卡死我们&#xff0c;因为下载jar包的速度慢的惊人 将其改为我们自己maven路径&#xff0c;下载速度会很快&#xff0c;便不会出现卡死的现象&a…