产品加工

某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。

你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少。

输入文件:(输入文件共n+1行)

第1行为 n。 n是任务总数(1≤n≤6000)

第i+1行为3个[0,5]之间的非负整数t1,t2,t3,分别表示第i个任务在A机器上加工、B机器上加工、两台机器共同加工所需要的时间。如果所给的时间t1或t2为0表示任务不能在该台机器上加工,如果t3为0表示任务不能同时由两台机器加工。

输出文件:最少完成时间

输入输出示例:

input.txt                         output.txt

5                                  9

2 1 0

0 5 0

2 4 1

0 0 3

2 1 1

  发现这一题并不太好设置状态,这里神奇地令dp[i]表示a工作i时b工作的最少量,当然是滚动数组。

  于是接下来的就很好推出结果了。现在我水平不够,根本没办法独立做出来啊%%%

 #include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int INF=;
const int maxn=;
int a[maxn],b[maxn],c[maxn];
int ta[maxn],tc[maxn];
int n,mx,dp[maxn];
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d%d",&a[i],&b[i],&c[i]);
if(!a[i])a[i]=INF;
if(!b[i])b[i]=INF;
if(!c[i])c[i]=INF;
}
memset(dp,,sizeof(dp));dp[]=;
for(int i=;i<=n;i++){
int t=;
if(a[i]!=INF)t=mx+a[i];
if(c[i]!=INF)mx+=c[i];
mx=max(mx,t);
for(int j=mx;j>=;j--){
t=dp[j];dp[j]=INF;
if(j-a[i]>=)dp[j]=min(dp[j],dp[j-a[i]]);
dp[j]=min(dp[j],t+b[i]);
if(j-c[i]>=)dp[j]=min(dp[j],dp[j-c[i]]+c[i]);
}
}
int ans=INF;
for(int i=;i<=maxn-;i++)
ans=min(ans,max(i,dp[i]));
printf("%d\n",ans);
return ;
}

动态规划(奇异状态):HNOI 2001 产品加工的更多相关文章

  1. [HNOI 2001]产品加工

    Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机 ...

  2. BZOJ1222[HNOI 2001]产品加工

    题面描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工 ...

  3. 【BZOJ2004】公交线路(动态规划,状态压缩,矩阵快速幂)

    [BZOJ2004]公交线路(动态规划,状态压缩,矩阵快速幂) 题面 BZOJ 题解 看到\(k,p\)这么小 不难想到状态压缩 看到\(n\)这么大,不难想到矩阵快速幂 那么,我们来考虑朴素的\(d ...

  4. 【arc093f】Dark Horse(容斥原理,动态规划,状态压缩)

    [arc093f]Dark Horse(容斥原理,动态规划,状态压缩) 题面 atcoder 有 \(2^n\) 名选手,编号为 \(1\) 至 \(2^n\) .现在这 \(2^n\) 名选手将进行 ...

  5. 【BZOJ1226】学校食堂(动态规划,状态压缩)

    [BZOJ1226]学校食堂(动态规划,状态压缩) 题面 BZOJ 洛谷 题解 发现\(b\)很小,意味着当前这个人最坏情况下也只有后面的一小部分人在他前面拿到饭. 所以整个结果的大致顺序是不会变化的 ...

  6. 【BZOJ5299】【CQOI2018】解锁屏幕(动态规划,状态压缩)

    [BZOJ5299][CQOI2018]解锁屏幕(动态规划,状态压缩) 题面 BZOJ 洛谷 Description 使用过Android手机的同学一定对手势解锁屏幕不陌生.Android的解锁屏幕由 ...

  7. 【题解】 P1879 玉米田Corn Fields (动态规划,状态压缩)

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  8. [USACO06NOV]玉米田Corn Fields(动态规划,状态压缩)

    题目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ...

  9. 数据结构(虚树,动态规划):HNOI 2014 世界树

    Hnoi2014 世界树 Description 世界树是一棵无比巨大的树,它伸出的枝干构成了整个世界.在这里,生存着各种各样的种族和生灵,他们共同信奉着绝对公正公平的女神艾莉森,在他们的信条里,公平 ...

随机推荐

  1. Java——(一)一切都是对象

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.用引用操纵对象   在java中一切都被视为对象,但操纵的标识符实际上是对象的一个“引用”( ...

  2. Objective-C:KVC

    1 概述 1.1 访问方法 Key-value coding(KVC)是一种间接访问对象属性的机制,类似键值对,通过名字(或键)可以直接获得对象的属性值.事实上,key-value coding定义了 ...

  3. 零基础学习云计算及大数据DBA集群架构师【Linux系统环境及权限管理12.21-12.25】

    从这周开始Linux的学习,老师是一位女老师,这到给了更多的信心,老师讲得很快,如果说只谈记命令的话是不多,但是要真正去理解,其实内容还是挺多的,我都是以老师讲的内容为主线,然后自己再看鸟哥的书做加深 ...

  4. IntelliJ IDEA 14

    新接触IntelliJ IDEA 14,使用起来还不是很称手,每天在使用中学习吧. 每学到一个新技能就来更新一下. (2015.11.17) " Ctrl + / " 代码批量注释 ...

  5. 关于this 的一个问题

    var name = "the window"; var object = { name:"my object"; getName:function(){ re ...

  6. 游标中的static参数

    以下测试用例将演示,使用static的游标和不使用的区别: if object_id(N't_test',N'u') is not null drop table t_test go create t ...

  7. 【HDU4366】【DFS序+分块】Successor

    Problem Description Sean owns a company and he is the BOSS.The other Staff has one Superior.every st ...

  8. Oracle数据库之视图与索引

    Oracle数据库之视图与索引 1. 视图简介 视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改. 视图基于的表称为基表,视图是存储在数据字典里的一条SE ...

  9. Spark的RDD编程(二)公众号undefined110

    创建RDD有两种方式:①读取外部数据集,lines=sc.textFile("README.md").②对一个集合进行并行化,lines=sc.parallelize([" ...

  10. Lambda表达式中的表达式lambda和语句lambda区别

    Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) = ...