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

输入格式:
第一行输入作业个数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];}

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

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

  1. 7-5 流水作业调度 (10 分)(思路+详解+johnson解析)Come Baby!!!!!!!!!!

    一:题目 n个作业{1,2,-,n}要在由2台机器M1和M2组成的流水线上完成加工.每个作业加工的顺序都是先在M1上加工,然后在M2上加工.M1和M2加工作业i所需的时间分别为ai和bi.流水作业调度 ...

  2. 10-4 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格 (10 分)思路+详解+测试用例

    前言:测试用表 贴心杰将这个测试表分享给大家 ,如果大家做题的时候发现那个点过不去,一定不要直接看别人的博客,先自己测试用例,如果思路也对 ,验证数据也对,还有错误 你再看看别人的思路!!! CREA ...

  3. 7-1 装载问题 (10 分)(思路+详解)

    一:题目 Come 宝宝!! 输出格式: 输出所有可行的方案数量 输入样例1: 3 50 50 10 40 40 结尾无空行 输出样例1: 4 结尾无空行 输入样例2: 3 50 50 20 40 4 ...

  4. 7-3 最小生成树-kruskal (10 分)(思路+详解+并查集详解+段错误超时解决)宝 Come

    一:前言 本题需要用到并查集的知识,建议先学完并查集后再看看本题 二:题目 题目给出一个无向连通图,要求求出其最小生成树的权值. 温馨提示:本题请使用kruskal最小生成树算法. 输入格式: 第一行 ...

  5. 7-6 区间覆盖 (10 分)(思路+详解)Come 宝!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    一:题目 设 x 1 ​ ,x 2 ​ ,-,x n ​ 是实直线上的n个点.用固定长度的闭区间覆盖这n个点,至少需要多少个这样的固定长度闭区间? 输入格式: 第1行有2个正整数n(n<50)和 ...

  6. 7-2 单源最短路径 (10 分)(思路+详解+邻接表做法)Come Brather!!!!!!!!!!

    一:前言 本次题解先展示用邻接矩阵做的,但其会出现内存超限,因为确实是临界矩阵在数据很大的时候相比临界表是耗内存的,但是以前习惯用临界矩阵了,所以一上来就用临界矩阵做了,后来上网查了后知道邻接矩阵会内 ...

  7. 7-1 字母统计图 (10 分)(思路+详解)

    一:题目 摆放在面前的是一小段英文文章. afeng希望你能帮他统计一下每个小写字母出现的次数. 最后再以柱状图的形式(参照输出样例)输出出来. 输入格式: 输入第一行为一个正整数N(N<=10 ...

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

    一:题目 Come 宝 !!! 输入格式: 第一行符号个数n 输出格式: 符合要求的三角形个数 输入样例: 4 结尾无空行 输出样例: 6 二:思路 思路: 1.如果我们确立的第一行的符号是什么 ,那 ...

  9. 7-3 凸多边形最优三角剖分 (10 分)(思路+详解+分析题意+动态规划)Come Baby!!!!!!!!!

    一:题目: 给定n边凸多边形P,要求确定该凸多边形的三角剖分(将多边形分割成n-2个三角形),使得该三角剖分中诸三角形上权之和为最小.各边弦的权值以由输入数据给出,以无向图的形式表示.三角形的权值等于 ...

最新文章

  1. 标记三维点_三维扫描仪对汽车钣金外形检测折弯件钣金件热成型加工件的应用...
  2. 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
  3. merge into语句的使用
  4. 天堂2启动mysql就没了_启用二进制日志文件进行mysql数据恢复
  5. [XSY3343] 程序锁(DP)
  6. Zookeeper概述、特点、数据模型
  7. iBatis 事务控制 与 两表操作将SQL语句写入单表
  8. 阿里云助力完美日记半年内系统吞吐量提升50倍
  9. 基于 Spring 实现管道模式的最佳实践
  10. element ui el-carousel 滚动图 vue 基于vue-lazyload图片懒加载、延迟加载 解决方案
  11. 你和大厂 Offer 有多近?C 认证免费测试一波,提前备考大厂
  12. 孙鑫VC学习笔记:第四讲 MFC消息映射机制和CDC类的使用
  13. Entry模拟对输入的密码进行验证是否符合规范
  14. jedate插件的使用
  15. 笔记| 计算机数据表示实验(HUST)| 汉字机内码获取实验
  16. 关于编程等宽字体 Cascadia Code
  17. python 为女神编朵玫瑰花的代码,python绘制玫瑰的代码
  18. 网易互联网,网易互娱 2021届校招内推开始啦
  19. cesium 绘制轨迹
  20. 为您的DC/DC 转换器选择最佳开关频率

热门文章

  1. 05.Bootstrap导入基础笔记
  2. 【数据结构与算法】多种语言(VB、C、C#、JavaScript)系列数据结构算法经典案例教程合集目录
  3. C语言试题二之计算并输出下列多项式值s=1+1/(1+2)+1/(1+2+3)+..1/(1+2+3…+50)
  4. 剑指offer之二叉树的高度
  5. Android之FLAG_ACTIVITY_TASK_ON_HOME
  6. Android之安全退出应用程序的几种方式
  7. 最大尺寸分辨率_未来就在眼前——视涯科技推出最高分辨率硅基OLED显示屏幕...
  8. 释放内存软件_原来苹果手机这样清理内存,可以释放大量空间,真是太好用了...
  9. 10张劲爆眼球的科学动图
  10. 动画演示男性结扎手术 | 今日趣图