bzoj 1222
比较简单的背包dp,设计状态f[i][j]表示到了前i个物品,第一台机器加工时间为j,第二台机器加工所用的最小时间,然后背包转移即可
本题卡空间,需要滚动数组优化
本题卡时间,稍微卡下常就行
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#define uint unsigned int
using namespace std;
uint dp[2][60005];
uint n;
uint v1[6005],v2[6005],v3[6005];
inline uint read()
{
uint f=1,x=0;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;
}
uint min(uint x,uint y)
{
return x<y?x:y;
}
uint max(uint x,uint y)
{
return x>y?x:y;
}
int main()
{
n=read();
int s1=0;
int s2=0;
for(int i=1;i<=n;i++)
{
v1[i]=read(),v2[i]=read(),v3[i]=read();
s1+=v1[i]+v3[i];
s2+=v1[i]+v3[i];
}
if(s1<=s2)
{
memset(dp,0x3f,sizeof(dp));
if(v1[1])
{
dp[0][v1[1]]=0;
}
if(v2[1])
{
dp[0][0]=v2[1];
}
if(v3[1])
{
dp[0][v3[1]]=min(dp[0][v3[1]],v3[1]);
}
int now=1,past=0;
for(int i=2;i<=n;i++)
{
memset(dp[now],0x3f,sizeof(dp[now]));
for(int j=0;j<=s1;j++)
{
if(j>=v1[i]&&v1[i])
{
dp[now][j]=min(dp[now][j],dp[past][j-v1[i]]);
}
if(j>=v3[i]&&v3[i])
{
dp[now][j]=min(dp[now][j],dp[past][j-v3[i]]+v3[i]);
}
if(v2[i])
{
dp[now][j]=min(dp[now][j],dp[past][j]+v2[i]);
}
}
swap(now,past);
}
uint ans=0x3f3f3f3f;
for(int i=0;i<=s1;i++)
{
ans=min(ans,max(i,dp[past][i]));
}
printf("%u\n",ans);
return 0;
}else
{
memset(dp,0x3f,sizeof(dp));
if(v1[1])
{
dp[0][0]=v1[1];
}
if(v2[1])
{
dp[0][v2[1]]=0;
}
if(v3[1])
{
dp[0][v3[1]]=min(dp[0][v3[1]],v3[1]);
}
int now=1,past=0;
for(int i=2;i<=n;i++)
{
memset(dp[now],0x3f,sizeof(dp[now]));
for(int j=0;j<=s2;j++)
{
if(j>=v1[i]&&v1[i])
{
dp[now][j]=min(dp[now][j],dp[past][j]+v1[i]);
}
if(j>=v3[i]&&v3[i])
{
dp[now][j]=min(dp[now][j],dp[past][j-v3[i]]+v3[i]);
}
if(v2[i])
{
dp[now][j]=min(dp[now][j],dp[past][j-v2[i]]);
}
}
swap(now,past);
}
uint ans=0x3f3f3f3f;
for(int i=0;i<=s2;i++)
{
ans=min(ans,max(i,dp[past][i]));
}
printf("%u\n",ans);
return 0;
}
}
bzoj 1222的更多相关文章
- bzoj 1222 DP
用w[i]表示在A中用了i的时间时在B中最少用多长时间,然后转移就可以了. 备注:这个边界不好定义,所以可以每次用一个cur来存储最优值,然后对w[i]赋值就可以了. /*************** ...
- bzoj 1222: [HNOI2001]产品加工 dp
1222: [HNOI2001]产品加工 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 381 Solved: 218[Submit][Status ...
- Bzoj 1222: [HNOI2001]产品加工 动态规划
1222: [HNOI2001]产品加工 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 486 Solved: 298[Submit][Status ...
- BZOJ 1222 产品加工(DP)
某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机器共同进行加工,所完成任 ...
- BZOJ 1222: [HNOI2001]产品加工
F[i]表示第一个机器用了i的时间,第二个机器的最小时间 转移即可 #include<cstdio> #include<algorithm> using namespace s ...
- 【BZOJ 1222】 [HNOI2001] 产品加工(DP)
Description 某加工厂有A.B两台机器,来加工的产品可以由其中任何一台机器完成,或者两台机器共同完成.由于受到机器性能和产品特性的限制,不同的机器加工同一产品所需的时间会不同,若同时由两台机 ...
- BZOJ刷题指南(转)
基础(65) 巨水无比(4):1214.3816:2B题:1000A+B:2462:输出10个1 模拟/枚举/暴力(15):4063傻子模拟:1968小学生暴力:1218前缀和暴力:3856读英文:4 ...
- BZOJ 2127: happiness [最小割]
2127: happiness Time Limit: 51 Sec Memory Limit: 259 MBSubmit: 1815 Solved: 878[Submit][Status][Di ...
- BZOJ 3275: Number
3275: Number Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 874 Solved: 371[Submit][Status][Discus ...
随机推荐
- Redis 深度历险
学习资料 https://juejin.im/book/5afc2e5f6fb9a07a9b362527 包括下面几方面的内容 基础 应用 原理 集群 拓展 源码 to be done
- Required String parameter 'images' is not present
后台控制层控制为非必填即可: @RequestMapping("/addDo") @SJson @SLog(description = "Car_main") ...
- shell编程 之 echo命令和printf命令
1 echo命令基本情况: echo显示普通字符:echo "i am studying shell"(有木有引号都可以) 支持转义字符:echo "\"hel ...
- 【转载】Latex定制章节编号格式和计数器
原文: http://www.chengkaiblog.com/software-application/latex/customize-section-format-counter.html _1. ...
- CF1139A Even Substrings
题目地址:CF1139A Even Substrings 一个数是偶数等价于其最后一位为偶数(2/4/6/8/0) 从左往右扫一遍,如果一个数是奇数则直接跳过,偶数则加上它对答案的贡献 这里的贡献应该 ...
- [Kubernetes]CentOS7下Etcd集群搭建
Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...
- 关于Mac或Linux下GO的Permission denied提示错误
有时候当你下载第三方库的时候,编译时会提示Permission denied 权限不足, 出现这种错误因为权限不够.其中一种办法是需要把你项目目录和go的pck.bin权限放开. chmod -R 7 ...
- Iterables vs. Iterators vs. Generators
Reprinted from: Iterables vs. Iterators vs. Generators Occasionally I've run into situations of conf ...
- Linux动态库的编译与使用 转载【转】
转自:http://www.cnblogs.com/leaven/archive/2010/06/11/1756294.html http://hi.baidu.com/linuxlife/blog/ ...
- Apollo-3.0本地编译
Apollo-3.0本地编译 用docker编译所用的dev.x86_64.dockerfile文件(具体位置在apollo/docker/build)中有所有的依赖库或包, 还会执行一些shell脚 ...