POJ 1384 Piggy-Bank 背包DP
所谓的全然背包,就是说物品没有限制数量的。
怎么起个这么intimidating(吓人)的名字?
事实上和一般01背包没多少差别,只是数量能够无穷大,那么就能够利用一个物品累加到总容量结尾就能够了。
本题要求装满的,故此添加个限制就能够了。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
inline int min(int a, int b) { return a < b? a : b; } const int MAX_W = 10001;
const int MAX_N = 501;
int val[MAX_N] = {0};
int wei[MAX_N] = {0};
int tbl[MAX_W]; int bagDP(int N, int W)
{
for (int i = 0; i <= W; i++) tbl[i] = 0; for (int j = wei[1]; j <= W; j += wei[1])
tbl[j] = val[1] + tbl[j-wei[1]]; for (int i = 2; i <= N; i++)
{
for (int j = wei[i]; j <= W; j++)
{
if (j-wei[i]==0 || tbl[j-wei[i]])
{
if (tbl[j]) tbl[j] = min(tbl[j],tbl[j-wei[i]]+val[i]);
else tbl[j] = tbl[j-wei[i]]+val[i];
}
}
}
return tbl[W];
} int main()
{
int E, F;//weight of an empty pig and of the pig filled with coins
int T, N;// P:value, W: weight
scanf("%d", &T);
while (T--)
{
scanf("%d %d %d", &E, &F, &N);
for (int i = 1; i <= N; i++)
{
scanf("%d %d", &val[i], &wei[i]);
}
int ans = bagDP(N, F-E);
if (ans) printf("The minimum amount of money in the piggy-bank is %d.\n", ans);
else puts("This is impossible.");
}
return 0;
}
POJ 1384 Piggy-Bank 背包DP的更多相关文章
- POJ 1384 POJ 1384 Piggy-Bank(全然背包)
链接:http://poj.org/problem?id=1384 Piggy-Bank Time Limit: 1000MS Memory Limit: 10000K Total Submissio ...
- poj 3624 Charm Bracelet 背包DP
Charm Bracelet Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3624 Descripti ...
- poj 2229 【完全背包dp】【递推dp】
poj 2229 Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissions: 21281 Accepted: 828 ...
- POJ 1384 Piggy-Bank(完全背包)
Description Before ACM can do anything, a budget must be prepared and the necessary financial suppor ...
- POJ 1384【完全背包】
题意: 已知储蓄罐满时的质量f以及空时质量e, 有n种硬币,每种硬币的价值为p,质量为w, 求该储蓄罐中的最少有多少钱? 思路: 完全背包思想,问题是在一个重量下的最小价值 那么只要变一下符号就好了? ...
- POJ 1155 树形背包(DP) TELE
题目链接: POJ 1155 TELE 分析: 用dp[i][j]表示在结点i下最j个用户公司的收益, 做为背包处理. dp[cnt][i+j] = max( dp[cnt][i+j ...
- 【bzoj1531】[POI2005]Bank notes 多重背包dp
题目描述 Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值 ...
- poj 1417 True Liars(并查集+背包dp)
题目链接:http://poj.org/problem?id=1417 题意:就是给出n个问题有p1个好人,p2个坏人,问x,y是否是同类人,坏人只会说谎话,好人只会说实话. 最后问能否得出全部的好人 ...
- poj 2184 01背包变形【背包dp】
POJ 2184 Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14657 Accepte ...
- poj1417(带权并查集+背包DP+路径回溯)
题目链接:http://poj.org/problem;jsessionid=8C1721AF1C7E94E125535692CDB6216C?id=1417 题意:有p1个天使,p2个恶魔,天使只说 ...
随机推荐
- 每个Android开发者必须知道的资源集锦
英文原文:Resources every Android developer must know 随着 Android 平台持续惊人的增长,越来越多的开发人员开始工作于 Android 应用程序.而且 ...
- 公布一个软件,轻新视频录播程序,H264/AAC录制视音频,保存FLV,支持RTMP直播
已经上传到CSDN,下载地址:http://download.csdn.net/detail/avsuper/7421647,不要钱滴,嘿嘿... 本程序能够把摄像头视频和麦克风音频,录制为FLV文件 ...
- c++ 如何获取系统时间 - zjnig711的信息仓库 - 博客频道 - CSDN.NET
c++ 如何获取系统时间 - zjnig711的信息仓库 - 博客频道 - CSDN.NET c++ 如何获取系统时间 分类: C/C++ 2008-05-08 22:15 14115人阅读 评论(5 ...
- MySql数据库SQL语句将编码
-- 查看所有字符编码 SHOW CHARACTER SET; -- 查看创建数据库的指令并查看数据库使用的编码 show create database dbtest; -- 查看数据库编码: sh ...
- hdu5001(概率dp)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5001 题意:一个人随即从一个点出发,到达邻接点的概率相同,求出走d步都不会到达1~n点的每一点i的概率 ...
- H.O.T candy
candy是什么意思_candy在线翻译_英语_读音_用法_例句_海词词典 candy
- 2014ACM/ICPC亚洲区域赛牡丹江站现场赛-K ( ZOJ 3829 ) Known Notation
Known Notation Time Limit: 2 Seconds Memory Limit: 65536 KB Do you know reverse Polish notation ...
- Difference between datacontract and messagecontract in wcf
在WCF中有两种契约各自是DataContract和MessageContract,这篇博客来讲一下两者的差别.先看一下两者定义契约实体的方式有和不同. 1.数据契约 <span style=& ...
- php截取等长UFT8中英文混合字串
由于需要,想实现“php截取等长UFT8中英文混合字串”,可是网上找了很多代码不是有乱码就是不能实现等长(以一个中文长度为单位,两个英文字母算一个长度,如‘等长’长度为2,‘UTF8’长度也是2). ...
- Linux下多线程查看工具(pstree、ps、pstack) (转)
1. pstree pstree以树结构显示进程$ pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+- ...