[BZOJ1222/Luogu2224][HNOI2001]产品加工
题目链接:
BZOJ1222
Luogu2224
题号不错
这种类型的\(DP\)是第二次见了,不过第一次是刚学的时候了,现在早就忘了,思想还是很神的。
看到时间\(\le 5\)也能猜到很重要了。
设\(f_{[i],[j]}\)表示前\(i\)件物品,\(A\)机器用时\(j\)秒时\(B\)机器最短用时。
为了避免分类讨论,如果\(a,b,c\)为\(0\)则改成\(+\infty\)
那么有如下转移方程式:
\[ f_{[i],[j]}= \begin{cases} f_{[i-1],[j-a]} & (a\le j)\\ f_{[i-1],[j]}+b\\ f_{[i-1],[j-c]}+c &(c\le j) \end{cases} \]
为什么不用考虑顺序?
因为对于所有空隙,一定可以通过适当的调整来拼在一起,保证答案的正确性。
这题还需要一定的毒瘤常数优化。
#include <cstdio>
#include <cstring>inline int Min(int a,int b){return a<b?a:b;}
inline int Max(int a,int b){return a>b?a:b;}const int Inf=0x3f3f3f3f;
int n,Ans=Inf,Up;
int f[30015];int main()
{scanf("%d",&n);memset(f,0x3f,sizeof f),f[0]=0;for(register int a,b,c;n--;){scanf("%d%d%d",&a,&b,&c);Up+=Max(a,c);a?0:a=Inf;b?0:b=Inf;c?0:c=Inf;for(register int i=Up;i>=0;--i){b==Inf?f[i]=Inf:f[i]+=b;if(a<=i)f[i]=Min(f[i],f[i-a]);if(c<=i)f[i]=Min(f[i],f[i-c]+c);}}for(int i=0;i<=Up;++i)Ans=Min(Ans,Max(i,f[i]));printf("%d\n",Ans);return 0;
}
转载于:https://www.cnblogs.com/LanrTabe/p/10184799.html
[BZOJ1222/Luogu2224][HNOI2001]产品加工相关推荐
- 【bzoj1222】[HNOI2001]产品加工 背包dp
题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工 ...
- bzoj1222: [HNOI2001]产品加工
一开始以为是费用流..然后搞不出来,路牌是DP,想一想 f[i][j]表示加工到第i个产品,然后A用时j,B用时的最小值 那么f[i][j]=max(f[i-1][j-a[i]],f[i-1][j]+ ...
- 【BZOJ 1222】 [HNOI2001] 产品加工(DP)
Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机 ...
- [HNOI2001] 产品加工
题目类型:\(DP\) 传送门:>Here< 题意:有\(N\)个零件,每个零件有三种选择,在\(A\)机器加工,在\(B\)机器加工,同时在\(AB\)加工.其中所需要的时间分别为\(t ...
- BZOJ 1221: [HNOI2001] 软件开发(最小费用最大流)
不知道为什么这么慢.... 费用流,拆点.... --------------------------------------------------------------------------- ...
- 专题·置换【including 置换,置换快速幂,洛谷·[HNOI2001]洗牌机
前言:若您手中有一本<组合数学>,那么请翻到P330看书吧,书上讲的是真的好.本文也基本参考该书讲解] 本篇博客算是后期两周内会写的一篇关于Polya定理的专题的前置知识] 目录 一.置换 ...
- 技术分享:一种电镀厚金产品加工工艺研究
1 前 言 PCB表面处理工艺众多,客户会根据焊接强度.焊接次数.存放时间.使用环境.器件大小.焊接方式.装配方式和成本等综合考量选择相应的表面处理工艺,其中一种印制线路板,客户用于测试或者作为程序写 ...
- [BZOJ 1221][HNOI2001]软件开发(费用流)
Description 某软件公司正在规划一项n天的软件开发计划,根据开发计划第i天需要ni个软件开发人员,为了提高软件开发人员的效率,公司给软件人员提供了很多的服务,其中一项服务就是要为每个开发人员 ...
- bzoj 1221: [HNOI2001] 软件开发
最小费用最大流 /**************************************************************Problem: 1221User: lxy8584099 ...
最新文章
- 【Harvest源码分析】GetWaveformAndSpectrumSub函数
- shell scripts 之 代码量统计
- 你真的会玩SQL吗?和平大使 内连接、外连接
- mapreduce的规约(Combiner)
- http://www.appinn.com/bookmark-manager-chrome/
- 采购订单单价金额屏蔽
- Modelsim 后仿真操作步骤之二——用Modelsim单独进行后仿真
- 2016年程序员如何提高自己的方法有哪些?
- 树莓派4bpython串口通信解读数据_树莓派基础实验36:通用串口通信实验
- 解决Eclipse中文乱码的问题
- java:linux上找出最耗资源的线程方法
- 推荐一款在线工具-程序员的工具箱
- 桌面移到D盘回移不回去了怎么办
- 服务器打不开jpg的文件,JPEG或JPG图片文件文件受损打不开,4种方法教你快速恢复!...
- ctrypto-js中,DES解密的iv向量处理
- 微信公众号的简单常识
- Apple Developer注册教程
- android6.0在状态栏添加一键截屏
- 安装C3D v1.0提取视频特征
- Aspose.Words for .NET使用教程(七):将文档转换为EPUB
热门文章
- 征战蓝桥 —— 2014年第五届 —— C/C++A组第4题——史丰收速算
- 第六章 定积分的应用 —— 第一节 定积分的元素法
- 【Qt】数据库SQL接口层
- springboot切面返回值_SpringBoot实战15-Spring基础-AOP
- python数据类型转换原因_浅谈Python数据类型之间的转换
- C++代码片段(三)过滤可变模板参数中某些类型的变量
- php写文件 效率,php中读写文件与读写数据库的效率_PHP教程
- php mysql 内存溢出_关于MySQL的整型数据的内存溢出问题的应对方法_MySQL
- Linux中的进程组及会话
- linux中断的上半部和下半部