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

题解

设dp[i]为A机器工作需时间i,B机器工作需时间dp[i],之后背包选择三种方案即可。

代码

#include<queue>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 30005
#define mod 1000000007
using namespace std;
int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
void Out(ll a){if(a<0) putchar('-'),a=-a;if(a>=10) Out(a/10);putchar(a%10+'0');
}
const int N=6005;
int a[N],b[N],c[N];
int dp[inf+10];
int main()
{int n=read(),m=0;for(int i=1;i<=n;i++){a[i]=read(),b[i]=read(),c[i]=read();if(!a[i]) a[i]=inf;if(!b[i]) b[i]=inf;if(!c[i]) c[i]=inf;int tmp=inf;tmp=min(tmp,a[i]);tmp=min(tmp,b[i]);tmp=min(tmp,c[i]);m+=tmp;}memset(dp,0x3f,sizeof(dp));dp[0]=0;for(int i=1;i<=n;i++) for(int j=m;j>=0;j--){dp[j]+=b[i];if(j>=a[i]) dp[j]=min(dp[j],dp[j-a[i]]);if(j>=c[i]) dp[j]=min(dp[j],dp[j-c[i]]+c[i]);}int ans=inf;for(int i=0;i<=m;i++) ans=min(ans,max(i,dp[i]));Out(ans);return 0;
}

转载于:https://www.cnblogs.com/zsyacm666666/p/7153159.html

【BZOJ 1222】 [HNOI2001] 产品加工(DP)相关推荐

  1. BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化)

    BZOJ - 2244 拦截导弹 (dp,CDQ分治+树状数组优化) 1 #include<algorithm> 2 #include<iostream> 3 #include ...

  2. BZOJ 3329 Xorequ (数位DP、矩阵乘法)

    BZOJ 3329 Xorequ (数位DP.矩阵乘法) 手动博客搬家: 本文发表于20181105 23:18:54, 原地址https://blog.csdn.net/suncongbo/arti ...

  3. 【bzoj1222】[HNOI2001]产品加工 背包dp

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

  4. acdream 1222 Quantization Problem [dp]

    称号:acdream 1222 Quantization Problem 题意:给出一个序列 a ,然后给出一个 n * m 的矩阵,让你从这个矩阵中选出一个序列k,使得sum(abs(ki - ai ...

  5. BZOJ.4553.[HEOI2016TJOI2016]序列(DP 树状数组套线段树/二维线段树(MLE) 动态开点)

    题目链接:BZOJ 洛谷 \(O(n^2)\)DP很好写,对于当前的i从之前满足条件的j中选一个最大值,\(dp[i]=d[j]+1\) for(int j=1; j<i; ++j)if(a[j ...

  6. [BZOJ 2165] 大楼 【DP + 倍增 + 二进制】

    题目链接:BZOJ - 2165 题目分析: 这道题我读了题之后就想不出来怎么做,题解也找不到,于是就请教了黄学长,黄学长立刻秒掉了这道题,然后我再看他的题解才写出来..Orz 使用 DP + 倍增 ...

  7. BZOJ 4244 邮戳拉力赛 (DP)

    手动博客搬家: 本文发表于20181211 18:01:21, 原地址https://blog.csdn.net/suncongbo/article/details/84957907 为了防止我的博客 ...

  8. BZOJ 3270: 博物馆 [概率DP 高斯消元]

    http://www.lydsy.com/JudgeOnline/problem.php?id=3270 题意:一张无向图,一开始两人分别在$x$和$y$,每一分钟在点$i$不走的概率为$p[i]$, ...

  9. bzoj 3120 矩阵优化DP

    我的第一道需要程序建矩阵的矩阵优化DP. 题目可以将不同的p分开处理. 对于p==0 || p==1 直接是0或1 对于p>1,就要DP了.这里以p==3为例: 设dp[i][s1][s2][r ...

最新文章

  1. 互联网域名产业报告(2021年)
  2. idea 编译spring_《Spring源码解析(二)》构建 Spring5 源码工程,开启研读Spring源码之路...
  3. 戴尔SC5020发布,专为提高效率/经济性优化设计的中端存储利器
  4. java设计智慧教室_物联网智慧教室设计方案,更便捷的智慧教学体验
  5. Windows 7无线路由器解决
  6. flowable 监听器中无法获取 oauth 上下文对象
  7. 雷赛服务器信号er020,雷赛配合松下电机做三轴,xy轴到位信号的问题
  8. Eclipse多国语言包的安装
  9. 软件测试面试题整理(二)之测试用例集
  10. 屏幕显示密度dpi_手机屏幕尺寸,分辨率,密度,dpi,dip,px,sp等详解
  11. 【云计算服务平台调研】阿里云、腾讯云、华为云对比
  12. 上海交通大学安泰经济与管理学院荣获WRDS-SSRN创新奖
  13. CATIA软件VBA二次开发:Excel文件中点坐标数据导入与生成点应用程序编写
  14. 最受欢迎的Python开源框架有哪些?
  15. hive修改表备注,字段备注
  16. 奇迹gm工具 奇迹批量远程工具
  17. ERP进销存源码带APP版附安装教程
  18. 基于51单片机直流电压电流表设计LCD1602液晶仿真资料DIY电子制作
  19. 【联想台式】10代+cpu台式机装win7系统及bios设置教程(完美支持)
  20. joomla学习 报错处理

热门文章

  1. 计算机代码如何使用方法,电脑定时自动关机代码怎么样使用
  2. c++输入一个整数判断是否为完全平方数_[leetcode/lintcode 题解] 谷歌面试题:完美平方...
  3. my batis plus 小数没有0_北师大版五年级第一单元小数除法知识点总结及易错题解析(1)...
  4. go使用互斥锁实现协程同步
  5. 序列复杂度怎么看_每日算法系列【LeetCode 376】摆动序列
  6. linux db2表空间目录,db2 表空间的一些知识
  7. pytorch from_numpy
  8. BaseAudioContext
  9. Scala class
  10. 2.10 是否要使用端到端的深度学习