题解:2018级算法第二次上机 Zexal的流水线问题
题目描述:



样例:

实现解释:
最基础的流水线调度问题,甚至没有开始和结束的值
实现方法即得出状态转移方程后完善即可,设a[][i]存储着第一二条线上各家的时间花费,t[][i]存储着i处进行线路切换的花费,f[][i]存储着各线在i处的最小花费。
则对每一个f[][i]应有如下的转移方程:
f[0][1] = a[0][1];
f[1][1] = a[1][1];
f[0][i] = min(f[0][i-1]+a[0][i],f[1][i-1]+t[1][i-1]+a[0][i]);
f[1][i] = min(f[1][i-1]+a[1][i],f[0][i-1]+t[0][i-1]+a[1][i]);
前两个为初始定义,后两个为具体的转换。
min函数中前一个值表示直接在当前这条线的前一个结点前进的花费,后一个表示从另一条线的前一个结点先转移过来后再前进的花费。此时只有两条线因此只有这两种情况,所以比较后便可得出到达该线该位置的最小花费。
多条线的情况可参考:题解:说好的ALS呢?
最后比较到达n处(最后一个家)哪条线的时间花费最小即可。
完整代码:
//流水线调度基本问题
#include<iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
int n;
int fend;
int i;
while(cin >> n)
{
int a[2][n+1],t[2][n];
//两条线上每一家花费的时间
for(i = 1;i<=n;i++)
cin >> a[0][i];
for(i = 1;i<=n;i++)
cin >> a[1][i];
//两条线不同位置转移的时间花费
for(i = 1;i<n;i++)
cin >> t[0][i];
for(i = 1;i<n;i++)
cin >> t[1][i];
//存储两条线不同位置的最小时间
int f[2][n+1];
//初始化防止错误
f[0][1] = a[0][1];
f[1][1] = a[1][1];
for(i = 2;i<=n;i++)
{
//具体状态转移方程介绍见实现解释
if(f[0][i-1]+a[0][i]<f[1][i-1]+t[1][i-1]+a[0][i])
f[0][i] = f[0][i-1]+a[0][i];
else
f[0][i] = f[1][i-1]+t[1][i-1]+a[0][i];
if(f[1][i-1]+a[1][i]<f[0][i-1]+t[0][i-1]+a[1][i])
f[1][i] = f[1][i-1]+a[1][i];
else
f[1][i] = f[0][i-1]+t[0][i-1]+a[1][i];
}
//计算两条线分别的最后时间花费得最小值
if(f[0][n]<f[1][n])
fend = f[0][n];
else
fend = f[1][n];
cout << fend << '\n';
}
return 0;
}
题解:2018级算法第二次上机 Zexal的流水线问题的更多相关文章
- 题解:2018级算法第二次上机 Zexal的竞赛
题目描述: 样例: 实现解释: 一道需要一点思考的动态规划题目 知识点:动态规划,数据记录 首先将题目描述调整:分别输入不同分数的题目总分(便于后续计算),当获得了i分数的总分后无法获得i-1和i+1 ...
- 题解:2018级算法第二次上机 Zexal的排座位
题目描述: 样例: 实现解释: 一道看似复杂但实际既是斐波那契变形的题目 知识点:递推,斐波那契 通过问题的描述,可以得到以下规律:(除了座位数为一时)男生坐最后时,倒数第二个一定是女生:女生坐最后, ...
- 2016级算法第二次上机-G.ModricWang's Real QuickSort
873 思路 这是一道非常基础的题,目的是帮助大家回顾快排相关的知识.大家完成此题之后应该就对快排有比较深刻的印象了. 对于整个快排的流程,题目描述中已经给了清晰完整的伪代码.需要自己加工的部分就是, ...
- 2016级算法第二次上机-F.ModricWang's Number Theory II
891 ModricWang's Number Theory II 思路 使得序列的最大公约数不为1,就是大于等于2,就是找到一个大于等于2的数,它能够整除序列中的所有数. 考虑使得一个数d整除数组中 ...
- 2016级算法第二次上机-E.AlvinZH的儿时梦想——运动员篇
862-AlvinZH的儿时梦想--运动员篇 思路 难题. 应该想到,不管给出的数据如何,每一个淘汰的人不会对最终答案产生任何影响,所以每次淘汰就把人除掉就可以了,最后剩下的两个人计算它们从开始到相遇 ...
- 2016级算法第二次上机-D.Bamboo的饼干
Bamboo的饼干 分析 从两个数组中各取一个数,使两者相加等于给定值.要注意去重和排序 难度不大,方法很多,基本只要不大于O(n^2 ) 的都可以过.本意想考察二分搜索 还可以借助stl中的map, ...
- 2016级算法第二次上机-C.AlvinZH的儿时梦想——坦克篇
872 AlvinZH的儿时梦想----坦克篇 思路 简单题.仔细看题,题目意在找到直线穿过的矩形数最小,不能从两边穿过.那么我们只要知道每一行矩形之间的空隙位置就可以了. 如果这里用二维数组记住每一 ...
- 2016级算法第二次上机-B.Bamboo的OS实验
Bamboo的OS实验 分析 首先理解题意,要完成不同数量的不同命令,但是完成相同的命令之间必须有n个间隔,为使得时间最短,自然优先用其他命令来填充这n分钟的时间,由于数量少的命令可以用来填充空隙,所 ...
- 2016级算法第二次上机-A.画个圈圈诅咒你
890 画个圈圈诅咒你 思路 简单题.题目中的圆并没有什么实际作用,简化成线段重合问题会更好理解些. 暴力解法:使用双重for循环会T到想哭,记住最直接的方法一般是过不了题的. 解法一:二分查找.空间 ...
随机推荐
- http压力测试工具及使用说明
http压力测试工具及使用说明 转 说明:介绍几款简单.易使用http压测工具,便于研发同学,压测服务,明确服务临界值,寻找服务瓶颈点. 压测时候可重点以下指标,关注并发用户数.TPS(每秒事务数量) ...
- Tomcat服务器学习和使用
一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. 如果想修改Tomcat服务器的启动端口,则可以在server.xml ...
- docker-将自己的Linux打包为镜像
基于原始文件和目录从0开始制作镜像: 1).基于CentOS7 Linux纯净系统(初始化安装完成),将Linux整个系统打包成tar文件即可: cd /root/ tar --numeric-own ...
- ListView 字母导航排序
一.概述 ListView字母导航排序,网上已经有很多代码和博客了, 这篇博文也是照搬网上的. 之所以写到这里,不是为了说明什么,只是为了以后自己查阅方便.本来公司要求实现expandablelis ...
- [原创] 为Visio添加公式编辑器工具栏按钮
前言 作为理工科的学生,在写论文时,难免会在示意图中添加一些公式来说明研究内容.常用的画图工具就是 Visio .而常用的公式编辑器就是 Mathtype .对于 Word 这种软件,Mathtype ...
- Java门面模式
一.简介 隐藏系统的复杂性,对外提供统一的访问入口,外部系统访问只通过此暴露出的统一接口访问.是一种结构型模式.封装子系统接口的复杂性,提供统一的对外接口,能够使子系统更加简单的被使用. 二.结构及使 ...
- at org.apache.jsp.WEB_002dINF.pages.login_jsp._jspInit( login_jsp.java:22)
SEVERE: Servlet.service() for servlet jsp threw exception java.lang.NullPointerException at org.apac ...
- 用.NET做动态域名解析
用.NET做动态域名解析 动态域名解析,或DNSR,通常用于解析IP地址经常变化的域名.电信网络提供了公网IP,给广大程序员远程办公.内容分享等方面带来了极大的便利.但公网IP是动态的,它会经常变化, ...
- 三大特征提取器(RNN/CNN/Transformer)
目录 三大特征提取器 - RNN.CNN和Transformer 简介 循环神经网络RNN 传统RNN 长短期记忆网络(LSTM) 卷积神经网络CNN NLP界CNN模型的进化史 Transforme ...
- CVPR 2019 论文解读 | 小样本域适应的目标检测
引文 最近笔者也在寻找目标检测的其他方向,一般可以继续挖掘的方向是从目标检测的数据入手,困难样本的目标检测,如检测物体被遮挡,极小人脸检测,亦或者数据样本不足的算法.这里笔者介绍一篇小样本(few ...