BZOJ1222 [HNOI2001]产品加工 - 动态规划- 背包
题解
怎么看都不像是个背包,直到我看了题解→_→, 第一次碰到这么奇怪的背包= =
定一个滚动数组$F_i$, $i$表示机器$a$用了$i$的时间, $F_i$表示机器$b$用了$F_i$的时间, 然后就直接可以进行滚动转移了。。。
真是开眼界啊QuQ
代码
#include<cstring>
#include<algorithm>
#include<cstdio>
#define rd read()
#define rep(i,a,b) for(register int i = (a); i <= (b); ++i)
#define per(i,a,b) for(register int i = (a); i >= (b); --i)
using namespace std; const int N = 8e3, inf = ~0U >> ; int n, m, f[N << ];
int a[N], b[N], ab[N]; inline int read() {
int X = , p = ; char c = getchar();
for(; c > '' || c < ''; c = getchar()) if(c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} inline int cmax(int A, int B) {
return A > B ? A : B;
} inline int cmin(int A, int B) {
return A > B ? B : A;
} int main()
{
n = rd;
rep(i, , n) {
a[i] = rd;
b[i] = rd;
ab[i] = rd;
m += cmax(a[i], ab[i]);
}
f[] = ;
rep(i, , n) per(j, m, ) {
int tmp = inf;
if(a[i] && j - a[i] >= ) tmp = cmin(tmp, f[j - a[i]]);
if(ab[i] && j - ab[i] >= ) tmp = cmin(tmp, f[j - ab[i]] + ab[i]);
if(b[i]) tmp = cmin(tmp, f[j] + b[i]);
f[j] = tmp;
}
int ans = inf;
rep(i ,, m) ans = cmin(ans, cmax(i, f[i]));
printf("%d\n", ans);
}
BZOJ1222 [HNOI2001]产品加工 - 动态规划- 背包的更多相关文章
- BZOJ1222: [HNOI2001]产品加工(诡异背包dp)
Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 907 Solved: 587[Submit][Status][Discuss] Descriptio ...
- Bzoj 1222: [HNOI2001]产品加工 动态规划
1222: [HNOI2001]产品加工 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 486 Solved: 298[Submit][Status ...
- BZOJ1222[HNOI2001]产品加工——DP
题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工 ...
- bzoj1222: [HNOI2001]产品加工--DP
DP神题orz dp[i]表示机器1工作i小时,机器2工作dp[i]小时 那么对于每个任务: 选1:dp[i]=dp[i-a]; 选2:dp[i]=dp[i]+b; 选1+2:dp[i]=dp[i-c ...
- bzoj1222: [HNOI2001]产品加工
注意时间都是 <= 5的.. #include<cstdio> #include<cstring> #include<cstdlib> #include< ...
- [luoguP2224] [HNOI2001]产品加工(背包DP)
传送门 f[i][j]表示第一个机器耗时j,第二个机器耗时f[i][j] 第一维可以滚掉 #include <cstdio> #include <cstring> #inclu ...
- 【BZOJ1222】[HNOI2001]产品加工 DP
[BZOJ1222][HNOI2001]产品加工 Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同 ...
- bzoj 1222: [HNOI2001]产品加工 dp
1222: [HNOI2001]产品加工 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 381 Solved: 218[Submit][Status ...
- 洛谷 P2224 [HNOI2001]产品加工 解题报告
P2224 [HNOI2001]产品加工 题目描述 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需 ...
随机推荐
- Solr Facet 搜索时,facet.missing = true 的真正含义
Solr的WiKI原文是如下解释: facet.missing Set to "true" this param indicates that in addition to the ...
- MySQL数据库索引(中)
上一篇回顾: 1.一个索引对应一颗B+树,所有的真实记录都是存在叶子节点里面的,所有的项目录都存在内节点或者说根节点上. 2.innodb会为我们的表格主键添加一个聚簇索引,如果没有主键的话数据库是会 ...
- Spring学习之AOP详解
aop使用方式 @Aspect注解 wildcards通配符: * 匹配任意数量的字符 + 匹配指定类及其子类 .. 一般用于匹配任意数的子包或参数 operators运算符 && 与 ...
- django中使用Form组件
内容: 1.Form组件介绍 2.Form组件常用字段 3.Form组件校验功能 4.Form组件内置正则校验 参考:https://www.cnblogs.com/liwenzhou/p/87478 ...
- angularJs按需加载代码(未验证)
一网友写的AngularJs按需加载代码,但未验证,放着备用. application.config( function($routeProvider) { ...
- eclipse运行程序时报java.lang.OutOfMemoryError: Java heap space内存不足问题
System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe"); ...
- a 超链接标签
Title百度 第一章 第一章 第一章内容 第二章内容 <!DOCTYPE html><html lang="en"><head> <me ...
- ActiveMQ无法启动
解决办法:activemq无法启动,端口被占用 用netstat -an无法查出61616被哪个进程占用(实践证明,netstat -ano|findstr '61616'什么也没有找到) 经过排查和 ...
- springmvc @valid
JSR303是javaEE6中的一个子规范:Bean Validation.官方实现是HibernateValidatior.校验: 使用springmvc 的validate机制,需要引入valid ...
- 下载的chm文件打不开问题
下载的chm文件无法打开,是因为此文件是在其它电脑上编辑的,上面留有原电脑的信息,当下载打开时,发现电脑信息不一致,因此会将应用锁定. 操作:文件 --> 属性 -->常规 --&g ...