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 ...
随机推荐
- Subsequences in Substrings Kattis - subsequencesinsubstrings (暴力)
题目链接: Subsequences in Substrings Kattis - subsequencesinsubstrings 题目大意:给你字符串s和t.然后让你在s的所有连续子串中,找出这些 ...
- XLMHttpRequest对象的status属性,readyState属性以及onreadystatechange事件
注:XLMHttpRequest简写为XHR 一.HTTP请求过程 (1)建立TCP链接 (2)web浏览器向web服务器发送请求命令 (3)web浏览器发送请求头信息 (4)web服务器应答 (5) ...
- light oj 1254 - Prison Break 最短路
题目大意:n个点m条边的有向图,q次询问c,s,t,表示汽车邮箱容量为c,求从起点s到终点t的最小费用.汽车在每个点可以加任意的油,每个点的单位油价为a[i]. 题目思路:利用最小费优先队列优化最短路 ...
- oracle12.2.1 坑
1.ORA-28040: No matching authentication protocol 解决:在Oracle用户(不是grid用户)下,将$ORACLE_HOME/network/admin ...
- SpringCloud Zuul(路由网关)
⒈Zuul是什么? Zuul包含了两个最主要的功能,对请求的路由和过滤.其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础.过滤器功能则负责对请求的处理过程进行干预,是实 ...
- Wireshark技巧-过滤规则和显示规则【转】
转自:https://www.cnblogs.com/icez/p/3973873.html Wireshark是一个强大的网络协议分析软件,最重要的它是免费软件. 过滤规则 只抓取符合条件的包,在W ...
- 从url(地址栏)获取参数:Jquery中getUrlParam()方法的使用
我想要获取如下id 如下代码(传参要加问好!!) function getUrlParam(id) { var regExp = new RegExp('([?]|&)' + id+ '=([ ...
- salt使用技巧
实时截获任务输出 __salt__['event.send']("module_send_event", {'message': message, 'jid': jid}, ...
- 【BZOJ 2119】股市的预测(SAM)
SAM很好用的啊... 传送门 双倍经验:L-Gap Substrings 基本做法类似,这道题的差分改掉,map 改掉就好了QWQ noteskey 反正就是先差分一下,然后把首项丢掉(没有比较的对 ...
- oracle 会话 解锁
背景 这是当年第一次记录博客,当初记录的原因是感觉有些问题很少碰到,碰到有网上寻找一遍,文章很少是正好对症的,折腾半天终于解决了,但是没有记录过程,结果下次碰到又要从来一次.有的问题还极其不好找,or ...