【bzoj1222】【HNOI2001】【产品加工】【dp】

原创 2015年11月21日 17:30:28

Description

某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少。

Input

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

Output

最少完成时间

Sample Input

5
2 1 0
0 5 0
2 4 1
0 0 3
2 1 1

Sample Output

9
题解:
用f[i]表示当第一个机器加工i时间时,第二个机器加工时间的最小值。
更新的时候像背包那样更新一下即可。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define INF 30010
using namespace std;
struct use{int a,b,c;}p[INF];
int n,m,f[INF],a[INF],b[INF],c[INF];
int main(){
    scanf("%d",&n);
    for (int i=1;i<=n;i++){
        scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);
        if(!p[i].a)p[i].a=INF;if(!p[i].b)p[i].b=INF;if(!p[i].c)p[i].c=INF;
        m+=min(p[i].a,min(p[i].b,p[i].c));
    }
    for(int i=1;i<=n;i++)
        for(int j=m;j>=0;j--){
            int temp=INF;
            if(j-p[i].a>=0)temp=min(temp,f[j-p[i].a]);
            temp=min(temp,f[j]+p[i].b);
            if(j-p[i].c>=0)temp=min(temp,f[j-p[i].c]+p[i].c);
            f[j]=temp;
        }
    int ans=INF;
    for(int i=0;i<=m;i++)ans=min(ans,max(i,f[i]));
    printf("%d",ans);
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

bzoj1222: [HNOI2001]产品加工

传送门 奇怪的dp 用f[i]表示第一个机器工作了i时第二个机器的最短工作时间。 暴力枚举由哪一个机器完成即可。#include #include #include #include ...

bzoj1222

题号就很神奇 神奇的dp f[i] 表示做完当前所有任务时 A机器做i B机器需要做f[i] 初始都是0 每一个要做的任务 更新一下f数组 最后取一下最小值 具体实现过程如下(这个应该一看...

bzoj1222(dp)

以前见过这样类型的dp,就顺手水过了。 这一类就是用f【i】表示a状态为i,b的最小状态。 #include #include #include #include #include...

[bzoj 1222] [HNOI2001]产品加工:状态的定义很有趣的DP

题意:有两台机器A、B和n个任务(n

BZOJ 1222: [HNOI2001]产品加工 我也不知道叫什么的DP

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

bzoj1222 [HNOI2001]产品加工

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

BZOJ 1222: [HNOI2001]产品加工

1222: [HNOI2001]产品加工Time Limit: 15 Sec Memory Limit: 162 MB Description 某加工厂有A、B两台机器,来加工的产品可以由其中任...

【HNOI2010】【BZOJ2001】City 城市建设2015.4.9编辑修改

Description PS国是一个拥有诸多城市的大国,国王Louis为城市的交通建设可谓绞尽脑汁。Louis可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费。Louis希望建造最...

BZOJ 1221 HNOI 2001 软件开发/网络流24题 餐巾计划问题 最小费用最大流

题目大意:有一个软件公司,每天需要给一些员工准备消毒毛巾,这些毛巾可以循环利用,但是需要消毒。可以将毛巾送去消毒,有两种方式,A天fA花费,B天fB花费。或者还可以直接买新毛巾,问为了满足员工的需求,...

[BZOJ]1221: [HNOI2001] 软件开发 费用流

Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【bzoj1222】【HNOI2001】【产品加工】【dp】
举报原因:
原因补充:

(最多只允许输入30个字)