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 ...
随机推荐
- 基于【字节】操作的IO接口:InputStream、OutputStream
InputStream 参考链接:对java中FileInputStream.BufferInputStream的理解 /** * Author:Mr.X * Date:2017/10/9 17:11 ...
- ASP.NET MVC - NPOI读取Excel
引入: using System; using System.Data; using System.IO; using NPOI.SS.UserModel; using NPOI.XSSF.UserM ...
- MyBatis-进阶2
typeHandler typeHandler有什么用? 你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型. 具体做法为:实现 org.apache.ibatis.type.T ...
- 在Linux安装ASP.NET Core运行时环境
我使用的是Centos7 ,其它的Linux请参考微软文档 微软官方介绍文档: https://www.microsoft.com/n ...
- 【运维】虚拟机如何安装CentOS
Centos是Linux发行版本之一. 接下来说说,如何在虚拟机上面安装Centos 1,创建虚拟机的过程本文就不再赘述,相信读者可以自己探索出来. 2,创建好一个空白的虚拟机之后,会看到一个编辑虚拟 ...
- 查找轮廓(cv2.findCountours函数)
1.输入为二值图像,黑色为背景,白色为目标 2.该函数会修改原图像,因此若想保留原图像在,则需拷贝一份,在拷贝图里修改. 一.查找轮廓 cv2.findContours() 三个输入参数:输入图像(二 ...
- Dubbo--基于Zookeeper服务与Spring集成
Dubbo Zookeeper Spring 1.部署dubbo服务管理中心 2.搭建dubbo服务环境 2.1 pom.xml 依赖 2.2 log4j.properties 日志打印 3.api ...
- Maya API Test
import maya.OpenMaya as OpenMaya import maya.OpenMayaMPx as OpenMayaMPx sl = OpenMaya.MSelectionList ...
- QML 从入门到放弃
发现了一个问题: QQuickView only supports loading of root objects that derive from QQuickItem. If your examp ...
- LwIP Application Developers Manual2---Protocols概览
1.前言 本文是对LwIP Application Developers Manual的翻译 lwIP是模块化的并支持广泛的协议,这些大部分协议可以被裁减从而减小代码的尺寸 2.协议概览 链路层和网络 ...