[luoguP2224] [HNOI2001]产品加工(背包DP)
2024-09-04 12:30:33
f[i][j]表示第一个机器耗时j,第二个机器耗时f[i][j]
第一维可以滚掉
#include <cstdio>
#include <cstring>
#include <iostream>
#define INF 1e9
#define min(x, y) ((x) < (y) ? (x) : (y))
#define max(x, y) ((x) > (y) ? (x) : (y)) using namespace std; int n, m, now = 0, last = 1, ans = 1e9;
int f[2][30011]; inline int read()
{
int x = 0, f = 1;
char ch = getchar();
for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
return x * f;
} int main()
{
int i, j, x, y, z;
n = read();
for(i = 1; i <= n; i++)
{
x = read(), y = read(), z = read();
m += max(x, max(y, z));
if(!x) x = INF;
if(!y) y = INF;
if(!z) z = INF;
now ^= 1, last ^= 1;
memset(f[now], 127 / 3, sizeof(f[now]));
for(j = m; j >= 0; j--)
{
if(j >= x) f[now][j] = min(f[now][j], f[last][j - x]);
f[now][j] = min(f[now][j], f[last][j] + y);
if(j >= z) f[now][j] = min(f[now][j], f[last][j - z] + z);
}
}
for(i = m; i >= 0; i--)
ans = min(ans, max(i, f[now][i]));
printf("%d\n", ans);
return 0;
}
最新文章
- WinHttp
- golang使用yaml格式解析构建配置文件
- NoSQL生态系统——类似Bigtable列存储,或者Dynamo的key存储(kv存储如BDB,结构化存储如redis,文档存储如mongoDB)
- Redis Sentinel机制与用法(一)
- Google protocol buffer在windows下的编译
- FZU 2214 Knapsack problem(背包问题)
- IOS开发中--点击imageView上的Button没有任何反应
- C++ 前置声明 和 包含头文件 如何选择
- Dynamic Programming - leetcode [动态规划]
- Sql_Case_When用法
- Macaca拓展自己控件的方法
- Java程序设计与数据结构导论--读后感
- css last
- python读取与写入csv,txt格式文件
- android开发(49) Android 下拉刷新的实现。使用 SwipeRefreshLayout 代替 pull-to-refesh
- vector读入指定行数但不指定列数的数字
- 样条之Akima光滑插值函数
- AIX 7命令行weblogic建域流水
- ViewFlipper实现自动播放的图片库
- Linux五种I/O模型性能分析