2016级算法第三次上机-B.Bamboo和巧克力工厂
B Bamboo和巧克力工厂
分析
三条流水线的问题,依然是动态规划,但是涉及的切换种类比较多。比较易于拓展到n条流水线的方式是三层循环,外层是第k个机器手,里面两层代表可切换的流水线
核心dp语句:cost[i][k] = min(cost[i][k], cost[j][k-1]+t[j][i]+p[i][k])
也可以在A题的基础上详细的列出所有可能的路线切割情况然后找到最小值。
注意本题与A题中t的含义不同。
上机时给出的伪代码
//数组从0开始
const int maxx= 510;
p[3][maxx];
t[3][3];
cost[3][maxx];//dp主体
N=2; M为输入值
void resolve(int N,int M)
{
初始化cost为无穷大
三条流水线的初始值为对应的P值:
cost[i][0] = p[i][0];
for k=1:M-1
for i=0:2
for j = 0:2
cost[i][k] = min(cost[i][k], cost[j][k-1]+t[j][i]+p[i][k]);
end
end
end
找出三条线路中在最后一个机器手时总用时的最小值即为所求
}
代码
const int maxx= 510;
int p[3][maxx];
int t[3][3];
int cost[3][maxx];
const int MAX = (1<<30);
void Resolve(int n,int m)
{
int i,j;
for(i= 0; i<n; i++)
for(j =0; j<m; j++)
cost[i][j] = MAX ;
for(int i= 0; i<n; i++)
cost[i][0] = p[i][0];
for(int k = 1; k<m; k++)
for(int i = 0; i<n; i++)
for(int j = 0; j<n; j++)
{
cost[i][k] = min(cost[i][k], cost[j][k-1]+t[j][i]+p[i][k]);
}
int ans = 500000000;
for( i =0; i<n; i++)
{
if(cost[i][m-1]<ans)
ans = cost[i][m-1];
}
printf("%d\n",ans);
}
int main()
{
int m;
while(scanf("%d",&m)!=EOF)
{
int i,j;
for(i = 0; i<3; i++)
for( j = 0; j<m; j++)
scanf("%d",&p[i][j]);
for(i= 0; i<3; i++)
for( j = 0; j<3; j++)
scanf("%d",&t[i][j]);
Resolve(3,m);
}
}
2016级算法第三次上机-B.Bamboo和巧克力工厂的更多相关文章
- 2016级算法第三次上机-A.Bamboo的小吃街
A Bamboo的小吃街 分析 经典的两条流水线问题,题目描述基本类似于课件中的流水线调度,符合动态规划最优子结构性质 关键的动态规划式子为: dp[0][j] = min(dp[0][j - 1], ...
- 2016级算法第三次上机-G.Winter is coming
904 Winter is coming 思路 难题.首先简化问题, \(n\) 个0与 \(m\) 个1排成一列,连续的0不能超过x个,连续的1不能超过y个,求排列方法数. 显然会想到这是动态规划. ...
- 2016级算法第三次上机-C.AlvinZH的奇幻猜想——三次方
905 AlvinZH的奇幻猜想--三次方 思路 中等题.题意简单,题目说得简单,把一个数分成多个立方数的和,问最小立方数个数. 脑子转得快的马上想到贪心,从最近的三次方数往下减,反正有1^3在最后撑 ...
- 2016级算法第三次上机-F.ModricWang的导弹防御系统
936 ModricWang的导弹防御系统 思路 题意即为:给出一个长度为n的序列,求出其最长不降子序列. 考虑比较平凡的DP做法: 令\(nums[i]\) 表示这个序列,\(f[x]\) 表示以第 ...
- 2016级算法第三次上机-E.ModricWang's Polygons
930 ModricWang's Polygons 思路 首先要想明白,哪些多边形可能是格点正多边形? 分情况考虑: 三角形不可能,因为边长为有理数的正三角形的面积为无理数,而格点三角形的面积为有理数 ...
- 2016级算法第三次上机-D.双十一的抉择
915 双十一的抉择 思路 中等题.简化题目:一共n个数,分成两组,使得两组的差最接近0,就是说要使两组数都尽可能的接近sum/2. 思路还是很混乱的,不知道如何下手,暴力也挺难的,还不能保证对.想一 ...
- 2016级算法第六次上机-E.Bamboo之吃我一拳
Bamboo之吃我一拳 分析 当两个点的距离<=d时,才可以出拳,想要使得满足出拳条件的点对最少但不为0 寻找最近点对距离,得到的最近距离能够使得可以出拳的组数最少,因为除了最近点对外其他组合均 ...
- 2016级算法第六次上机-A.Bamboo之寻找小金刚
Bamboo之寻找小金刚 分析 可以抽象为许多连续线段,分别计数左拐和右拐的个数.考察叉积的基础应用. 假设ABC三点构成一个夹角∠ABC,B就是拐点,AC是辅助形成夹角.考虑线段AB和BC形成的向量 ...
- 2016级算法第五次上机-B.Bamboo&APTX4844魔发药水
Bamboo&APTX4844魔发药水 题意 "于是,Bamboo耐着性子,看巫师从袖子里掏出 M 瓶时光泉水和 K 粒绿色能量.每瓶时光泉水重量为 c ,生发效果为 l:每粒绿色能 ...
随机推荐
- 关于《Spark快速大数据分析》运行例子遇到的报错及解决
一.描述 在书中第二章,有一个例子,构建完之后,运行: ${SPARK_HOME}/bin/spark-submit --class com.oreilly.learningsparkexamples ...
- c# 类中使用ResolveUrl
类中使用ResolveUrl 1>获取当前page然后调用ResolveUrl System.Web.UI.Page page = HttpContext.Current.CurrentHand ...
- Solidity oraclize解析Json格式数据
solidity虽然不能解析json数据但是oraclize_query可以直接处理: pragma solidity ^; import "github.com/oraclize/ethe ...
- IPP库下FFT的基本实现
首先感谢韩昊同学,他的傅里叶分析入门给我们对数学公式不熟悉的人了解傅里叶算法打开了一扇窗户,其原文发表于知乎:https://zhuanlan.zhihu.com/p/19763358 在了解其基本原 ...
- 隐藏在default construct后面的是什么
C++新手很容易陷入两个认识上的误区: 1.任何类如果不显示的定义一个构造函数那么编译器就会构造出一个默认构造函数. 2.默认构造函数负责类的所有数据成员的初始化,显然不是这样的. 为什么不是这样的, ...
- chrome crx下载路径
chrome crx下载后会被删除,可在检查时粘贴出来,下载路径在: %localappdata%\Google\Chrome\User Data\Webstore Downloads 参考:http ...
- LWIP内存管理
LWIP是一种TCP/IP协议栈,与嵌入式操作系统一样也提供了内存管理. 内存池里面有多个同样大小的内存,不同类型的内存池其里面的内存大小不一样.
- javascrip总结43:标签上自定义属性的操作
1 获取标签属性 语法: element.getAttribute('属性名') 返回对应属性的值 ,如果没有返回null. //html <div id="box" ind ...
- Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表
端口 作用 9000 fs.defaultFS,如:hdfs://172.25.40.171:9000 9001 dfs.namenode.rpc-address,DataNode会连接这个端口 50 ...
- HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html
HBase提示已创建表,但是list查询时,却显示表不存在. https://blog.csdn.net/liu16659/article/details/80216085 下载网址 http://a ...