BZOJ 1222 [HNOI2001]产品加工
2016-10-27 16:30
274 查看
Description
某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少。
【题目分析】
动态规划。
【代码】
某加工厂有A、B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成。由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任务又会不同。某一天,加工厂接到n个产品加工的任务,每个任务的工作量不尽一样。你的任务就是:已知每个任务在A机器上加工所需的时间t1, B机器上加工所需的时间t2及由两台机器共同加工所需的时间t3,请你合理安排任务的调度顺序,使完成所有n个任务的总时间最少。
【题目分析】
动态规划。
【代码】
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int ans=0x3f3f3f3f,f[30001],n; int main() { memset(f,0x3f,sizeof f); scanf("%d",&n);f[0]=0; for (int i=1;i<=n;++i) { int tmp=i&1,a,b,c; scanf("%d%d%d",&a,&b,&c); for (int j=30000;j>=0;j--) { int t=0x3f3f3f3f; if (c&&j-c>=0) t=min(t,f[j-c]+c); if (b) t=min(t,f[j]+b); if (a&&j-a>=0) t=min(t,f[j-a]); f[j]=t; } } for (int j=0;j<=30000;++j) ans=min(ans,max(j,f[j])); printf("%d\n",ans); }
相关文章推荐
- 【bzoj1222】[HNOI2001]产品加工 背包dp
- 【BZOJ1222】[HNOI2001]产品加工 DP
- bzoj 1222: [HNOI2001]产品加工 dp
- 【BZOJ 1222】 [HNOI2001] 产品加工(DP)
- [bzoj 1222] [HNOI2001]产品加工:状态的定义很有趣的DP
- bzoj1222 [HNOI2001]产品加工 dp
- [bzoj1222] [HNOI2001]产品加工
- bzoj1222 [HNOI2001]产品加工
- Bzoj 1222: [HNOI2001]产品加工 动态规划
- bzoj1222: [HNOI2001]产品加工
- BZOJ1222: [HNOI2001]产品加工
- BZOJ 1222 [HNOI2001]产品加工 动态规划
- BZOJ 1222: [HNOI2001]产品加工( dp )
- bzoj1222 [HNOI2001]产品加工
- BZOJ1222: [HNOI2001]产品加工
- BZOJ 1222: [HNOI2001]产品加工 dp
- BZOJ 1222: [HNOI2001]产品加工 我也不知道叫什么的DP
- 【bzoj1222】【HNOI2001】【产品加工】【dp】
- 【bzoj 1222】 [HNOI2001]产品加工
- bzoj1222: [HNOI2001]产品加工