Description
n种点心,每种点心有一定的能量t,体积u和数量v,现在要用m种卡车搬运这些点心,每种开车有一定的容量x,花费y和数量z,点心可以分割但选一块就要都选,现在问将运送总能量不小于p的点心的最小花费
Input
第一行一整数T表示用例组数,每组用例首先输入三个整数n,m,p分别表示点心种类数,车的种类数以及目标能量值,之后n行每行三个整数ti,ui,vi表示第i种点心你的能量值,体积和数量,之后m行每行三个整数xi,yi,zi表示第i种卡车的容量,花费和数量
(T<=10,1<=n,m<=200,0<=p<=50000,1<=ti,ui,vi,xi,yi,zi<=100)
Output
对于每次用例,问运送总能量不小于p的点心所需的最小花费,如果没有合法运送方案或者最小花费大于50000则输出TAT
Sample Input
4
1 1 7
14 2 1
1 2 2
1 1 10
10 10 1
5 7 2
5 3 34
1 4 1
9 4 2
5 3 3
1 3 3
5 3 2
3 4 5
6 7 5
5 3 8
1 1 1
1 2 1
1 1 1
Sample Output
4
14
12
TAT
Solution
做两遍多重背包,第一遍对点心,求出总能量不小于p的最小体积minv,第二遍对卡车,求出总容积不小于minv的最小花费minc,第一遍背包上限p+100,第二遍背包上限50000,复杂度可以接受
Code

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define maxn 55555
int T,n,m,p,t[222],u[222],v[222],x[222],y[222],z[222],dp[maxn];
int res,a[maxn],b[maxn];
int Solve(int n,int v[],int w[],int num[])
{int sum=0;for(int i=1;i<=n;i++)sum+=num[i]*v[i];res=0;for(int i=1;i<=n;i++){int k=1;while(k<num[i]){a[res]=k*v[i],b[res++]=k*w[i];num[i]-=k;k*=2;}if(num[i])a[res]=num[i]*v[i],b[res++]=num[i]*w[i];}return sum;
}
int main()
{scanf("%d",&T);while(T--){scanf("%d%d%d",&n,&m,&p);for(int i=1;i<=n;i++)scanf("%d%d%d",&t[i],&u[i],&v[i]);for(int i=1;i<=m;i++)scanf("%d%d%d",&x[i],&y[i],&z[i]);int temp=Solve(n,t,u,v);if(temp<p)printf("TAT\n");else{int minv=INF;for(int i=1;i<maxn;i++)dp[i]=INF;dp[0]=0;//dp[j]表示前i个物品总能量为j所需要的最小体积 for(int i=0;i<res;i++)for(int j=p+100;j>=a[i];j--){dp[j]=min(dp[j],dp[j-a[i]]+b[i]);if(j>=p)minv=min(minv,dp[j]);}temp=Solve(m,x,y,z);if(temp<minv)printf("TAT\n");else{memset(dp,0,sizeof(dp));int minc=INF;//dp[j]表示前i辆卡车花费为j的最大容积 for(int i=0;i<res;i++)for(int j=50000;j>=b[i];j--){dp[j]=max(dp[j],dp[j-b[i]]+a[i]);if(dp[j]>=minv)minc=min(minc,j);}if(minc>50000)printf("TAT\n");else printf("%d\n",minc);}}}return 0;
}

HDU 5445 Food Problem(多重背包)相关推荐

  1. [HDU 5445]Food Problem[多重背包]

    题目链接:[HDU 5445]Food Problem[多重背包] 题意分析: 有n种类型的点心,每种提供t的能量,占据u的空间,有v个: 有m种类型的卡车,每种容量x,雇佣花费y,能提供z辆: 点心 ...

  2. hdu 5445 Food Problem (多重背包)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5445 题解:一看就像多重背包就是怎么看都不好做.但是这里有点明显的就是有两个背包,一个是糖 ...

  3. HDU 5445 Food Problem 多重背包+二进制优化

    据说也可以用单调队列优化多重背包,但是我不会,所以还是选择了二进制优化... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5445 题意:先给n,m, ...

  4. Hdu 5445 Food Problem 多重背包

    题意:给出n,m,p,分别表示有n种点心,m种卡车,能量p. 然后给出每种点心所能获得的能量,所占卡车的体积,以及每种点心的数量. 再给出每种卡车所能装下的空间,租这种卡车的费用,以及每种卡车的数量. ...

  5. HDU 5445 Food Problem 两次多重背包

    题目描述: Problem Description Few days before a game of orienteering, Bell came to a mathematician to so ...

  6. HDU 5445:Food Problem

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5445 题目翻译: 有N种甜点,M种卡车,至少需要P点能量. 然后给出N个 t, u, v,t是甜点能提 ...

  7. HDU 5445 Food Problem

    题意:有n种糖果,m种箱子,需要的能量为p.每种糖果有它的能量.体积.数量,每种箱子有它的容量.价格.数量,问至少获得p能量的前提下,最少花多少钱 思路:首先可以知道这是一个背包,然后可以求出能量为i ...

  8. Dividing(HDU 1059)(多重背包_二进制优化)

    题目链接: 题意:有价值分别为1,2,3,4,5,6的marbles(大理石)若干,问是否能使这些marbles平分.[marbles总数不超过2e4(很明显这是一个大常数,所以用二进制优化来做)] ...

  9. HDU 5445 (多重背包)

    题目链接:点击这里 题意: 有n个物品, m个卡车. 已知每种物品的能量, 体积和数量还有每种卡车的体积, 花费和数量, 求至少得到p能量的最少的卡车花费. 物品装卡车的时候能够切开装. 两次多重背包 ...

最新文章

  1. 收到贺卡和礼物的处理方法
  2. Java黑皮书课后题第7章:*7.6(修改程序清单5-15)程序清单5-15通过检验2、3、4…n/2是否是数n的因子来判断n是否为素数。判断n是否素数的更高效的方法是检验小于等于根n的素数是否有n整
  3. Activity service 通信
  4. java 设置pdf 编码格式_Java如何设置PDF文档背景色详解
  5. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
  6. Java 开发者每天都在做什么?
  7. Prometheus监控学习笔记之360基于Prometheus的在线服务监控实践
  8. 【刷题】LOJ 6007 「网络流 24 题」方格取数
  9. “康园圈--互联网+校园平台“项目之拓展手机客户端
  10. 计算机网络谢希仁第七版课后习题答案
  11. 手机html图片自适应屏幕大小,手机端 图片自适应屏幕尺寸
  12. python学习视频下载地址全套
  13. 大数据服务模型设计:默默无闻的贤内助
  14. 关于Linux下面移动硬盘读不出来
  15. Android默哀日代码实现,简单直接
  16. 输入你的密码来连接到_查看电脑已连接的WIFI密码
  17. 51nod 1072 威佐夫游戏
  18. 提供一些网上webservice的WSDL地址
  19. python保存的代码在哪里_Python保存程序
  20. kmalloc与vmalloc的区别

热门文章

  1. 【数学概念】充分必要条件(充分性、必要性)的简单辨析
  2. 计算机打印设置方法,针式打印机怎么设置【图文详解】
  3. matlab画图环形颜色渐变,Core Animation实战之环形颜色渐变进度条
  4. 三星s9 android,总算是对市场妥协了!三星S9+售价直掉三千,现售价够值了
  5. 创新与服务紧贴“本土化”,Galaxy S9|S9+不愧为三星诚意之作
  6. Unity一件替换所有字体Font
  7. linux清空日志到黑洞,Linux中的黑洞(black hole)-/dev/null
  8. 视频转mp3格式怎么弄?
  9. “绿宝书”好在哪?前端大佬们都在推荐
  10. 如何帮助企业员工快速成长?不少企业是这样做的