http://acm.hdu.edu.cn/showproblem.php?pid=2844&&背包问题

原创 2012年03月23日 09:58:48

题意:给你一些硬币,问你一共可以组成多少种面值的钱。。。可以转化为0-1背包问题,求出可以把背包装满的情况。。。

AC代码:

#include<iostream>
#include<algorithm>
#include<string.h>
#define N 100000
#define M 1700
using namespace std;
int v[M],dp[N];
int a[101],b[101];
int main()
{
	int n,m;
	while(cin>>n>>m&&n&&m)
	{  
		int tot=0;
		for(int i=0;i!=n;++i)
		   cin>>a[i];
		for(int i=0;i!=n;++i)
		  cin>>b[i];
		for(int i=0;i<n;++i)
		{
			int t=1;
			while(2*t<b[i]+1)
			{
				v[tot++]=a[i]*t;
				t=t*2;
			}
			v[tot++]=(b[i]+1-t)*a[i];
		} 
			
		for(int i=1;i<=m;++i)
			dp[i]=-0xfffffff;
		   dp[0]=0;
		 for(int i=0;i<tot;++i)
			{  if(v[i]>m) continue;
				for(int j=m;j>=v[i];--j)
					dp[j]=max(dp[j-v[i]]+v[i],dp[j]);
		    }
		 int k=0;
		  for(int i=1;i<=m;++i)
			  if(dp[i]>0) k++;
		  cout<<k<<endl;
		}return 0;
}

标记法:

#include<iostream>
#include<algorithm>
#include<string.h>
#define N 100000
#define M 1700
using namespace std;
int v[M],dp[N];
int a[101],b[101];
int main()
{
	int n,m;
	while(cin>>n>>m&&n&&m)
	{  
		int tot=0;
		for(int i=0;i!=n;++i)
		  cin>>a[i];
		for(int i=0;i!=n;++i)
		  cin>>b[i];
		for(int i=0;i<n;++i)
		{
			int t=1;
			while(2*t<b[i]+1)
			{
				v[tot++]=a[i]*t;
				t=t*2;
			}
			v[tot++]=(b[i]+1-t)*a[i];
		}
			
		for(int i=1;i<=m;++i)
			dp[i]=-1;
		    dp[0]=1;
		 for(int i=0;i<tot;++i)
			{  if(v[i]>m) continue;
				for(int j=m;j>=v[i];--j)
					if(dp[j-v[i]]==1) dp[j]=1;
		    }
		 int k=0;
		  for(int i=1;i<=m;++i)
			  if(dp[i]==1) k++;
		  cout<<k<<endl;
		}return 0;
}


hdu1757 矩阵快速幂--

http://acm.hdu.edu.cn/showproblem.php?pid=1757 链接镇楼。。 给出
  • u014625544
  • u014625544
  • 2014年04月26日 16:13
  • 849

POJ3617 字符串问题

Best Cow Line Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15444   Accepted: 4...
  • zcj5027
  • zcj5027
  • 2016年01月25日 21:09
  • 273

背包问题详解:01背包、完全背包、多重背包

参考链接: http://www.cnblogs.com/fengty90/p/3768845.html http://blog.csdn.net/mu399/article/details/7722...
  • na_beginning
  • na_beginning
  • 2017年03月17日 11:47
  • 2067

01背包问题和完全背包问题

在hihocoder上面两期的题目,一个01背包问题,一个完全背包问题。总结一下!...
  • KangRoger
  • KangRoger
  • 2014年08月27日 10:27
  • 51148

三种背包问题的例题(各一道)

FIRST —————————————————————— 1102 采药 2005年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 G...
  • xym_CSDN
  • xym_CSDN
  • 2015年08月21日 14:49
  • 1698

中级篇——背包问题3(多重背包)

上一篇讲的完全背包是指在所有物品件数无限多的情况下选择最值,现在引申出多重背包问题,即各物品个数均有限且不一定相同,求轙类情况下的最值。...
  • chuck001002004
  • chuck001002004
  • 2015年12月17日 14:01
  • 3915

【DP算法篇之初学】背包问题

昨天做了爱奇艺的内推笔试,编程题又出现了动态规划问题,感觉动态规划出现的概率好大,需要加强下。这里借用背包问题开始我们的学习。 背包问题的经典讲解可以参见背包问题九讲,此外我在刷题的过程中发现还发...
  • woxiaohahaa
  • woxiaohahaa
  • 2016年08月31日 10:13
  • 3622

0-1背包问题和完全背包问题

二者区别:0-1背包问题是说每件物品不可重复使用,而完全背包则是说每件物品可以重复使用。 先看一下0/1背包的简化版:     现有N个物品,每个物品重量为W,这些物品能否使在载重量为S的背包装满(...
  • supersnow0622
  • supersnow0622
  • 2013年08月05日 21:22
  • 5318

有依赖的背包问题

地址:http://blog.csdn.net/mishifangxiangdefeng/article/details/8763361 简化的问题  这种背包问题的物品间存在某种“依...
  • zsc2014030403015
  • zsc2014030403015
  • 2015年01月26日 11:36
  • 479

dd大牛的背包九讲-背包问题汇总

背包九讲 目录  第一讲 01背包问题  第二讲 完全背包问题  第三讲 多重背包问题  第四讲 混合三种背包问题  第五讲 二维费用的背包问题  第六讲 分组的背包问题  第七讲 有依赖的背包...
  • aaakirito
  • aaakirito
  • 2017年01月05日 19:26
  • 1304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:http://acm.hdu.edu.cn/showproblem.php?pid=2844&&背包问题
举报原因:
原因补充:

(最多只允许输入30个字)