POJ 1742 hdu 2844 Coins
题目链接:http://poj.org/problem?id=1742
http://acm.hdu.edu.cn/showproblem.php?pid=2844
题目分类:动态规划
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm> using namespace std;
int n,m;
bool flag[]; struct P
{
int a,b; }point[]; int cmp(P X,P Y)
{
return X.a<Y.a;
} int main()
{
while(scanf("%d %d",&n,&m)&&(n+m))
{
memset(point,,sizeof(point));
memset(flag,,sizeof(flag)); for(int i=;i<=n;i++)
{
scanf("%d",&point[i].a);
}
for(int i=;i<=n;i++)
{
scanf("%d",&point[i].b);
}
sort(point+,point+n+,cmp);
int sum[]; flag[]=;
for(int i=;i<=n;i++)
{
memset(sum,,sizeof(sum));
for(int k=point[i].a;k<=m;k++)
{
if(flag[k-point[i].a]&&sum[k-point[i].a]<point[i].b&&!flag[k])
{
sum[k] = sum[k-point[i].a] + ;
flag[k] = ;
}
}
} int ans=;
for(int i=;i<=m;i++)
{
if(flag[i])
{
//printf("sss== %d\n",i);
ans++;
}
}
printf("%d\n",ans);
}
return ;
}
#include<bits/stdc++.h> using namespace std; bool dp[];
int TmpVal[];
int val[]; int main()
{
cin.sync_with_stdio(false);
cout.sync_with_stdio(false);
int n, m;
while(cin>>n>>m)
{
if(n== && m==)
break;
memset(dp, , sizeof(dp));
for(int i=;i<=n;i++)
cin>>TmpVal[i];
int N = ;
for(int i=;i<=n;i++)
{
int num;
cin>>num;
int j = 1;
while(j<=num)
{
val[++N] = TmpVal[i] * j;
num -= j;
j = (j<<1);
}
if(num)
{
val[++N] = TmpVal[i] * num;
}
}
dp[0] = 1;
for(int i=;i<=N;i++)
{
for(int j=m;j>=val[i];j--)
{
if(dp[j-val[i]])
dp[j] = ;
}
}
int ans = ;
for(int i=;i<=m;i++)
if(dp[i])
ans++;
printf("%d\n", ans);
}
return ;
}
POJ 1742 hdu 2844 Coins的更多相关文章
- 背包系列练习及总结(hud 2602 && hdu 2844 Coins && hdu 2159 && poj 1170 Shopping Offers && hdu 3092 Least common multiple && poj 1015 Jury Compromise)
作为一个oier,以及大学acm党背包是必不可少的一部分.好久没做背包类动规了.久违地练习下-.- dd__engi的背包九讲:http://love-oriented.com/pack/ 鸣谢htt ...
- HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...
- HDU 2844 Coins (多重背包计数 空间换时间)
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu 2844 Coins (多重背包)
题意是给你几个数,再给你这几个数的可以用的个数,然后随机找几个数来累加, 让我算可以累加得到的数的种数! 解题思路:先将背包初始化为-1,再用多重背包计算,最后检索,若bb[i]==i,则说明i这个数 ...
- hdu 2844 Coins (多重背包+二进制优化)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844 思路:多重背包 , dp[i] ,容量为i的背包最多能凑到多少容量,如果dp[i] = i,那么代表 ...
- hdu 2844 Coins
Coins Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted S ...
- hdu 2844 coins(多重背包 二进制拆分法)
Problem Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. On ...
- hdu 2844 Coins 多重背包(模板) *
Coins Time Limit: 2000/1 ...
- HDU 2844 Coins(多重背包)
点我看题目 题意 :Whuacmers有n种硬币,分别是面值为A1,A2,.....,An,每一种面值的硬币的数量分别是C1,C2,......,Cn,Whuacmers想买钱包,但是想给人家刚好的钱 ...
随机推荐
- Ubuntu14.04更新源
Ubuntu14.04更新源 http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html Ubuntu源 http://wiki.ub ...
- Java基础07 包
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经写了一些Java程序.之前的每个Java程序都被保存为一个文件,比如Tes ...
- AsyncTask的用法总结
这几天被AsyncTask虐得不行,在此总结下 首先: AsyncTask的参数介绍 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占 ...
- Swift - 短信发送功能的实现
使用MessageUI.framework框架可以实现短信发送功能,步骤如下: (1)首先判断设备是否有发送短信功能 (2)如果设备允许发送短信,创建一个MFMessageComposeViewCon ...
- NodeJS会是昙花一现吗?
在用了一年以后,我感觉node.js有一点不正确劲.它非常有意思,可是我认为我应该用另外一个视角去审视它. 网络编程真的能够更easy吗? node.js无疑有一些设计很好的地方.前段时间我写了一个性 ...
- HDU 3966 Aragorn's Story(树链剖分)
HDU Aragorn's Story 题目链接 树抛入门裸题,这题是区间改动单点查询,于是套树状数组就OK了 代码: #include <cstdio> #include <cst ...
- unix domain IPC 进程间通信简析
Linux系统有多种进程间通信方式,如信号.消息队列.管道等,socket是其中一种,socket使用unix domain 模式进行进程间通信 //服务端代码 #include <stdio. ...
- cocos2d-x 3.0来做一个简单的游戏教程 win32平台 vs2012 详解献给刚開始学习的人们!
原代码来自于网络,因为cocos2d-x 3.0的资料,的确不多,与曾经版本号的接口非常难对上, 所以网上非常多样例都无法调试,对于新学习cocos2d-x 的同学,难度添加了,所以出一个超具体的样例 ...
- Swift - 使用下划线(_)来分隔数值中的数字
为了增强较大数值的可读性,Swift语言增加了下划线(_)来分隔数值中的数字. 不管是整数,还是浮点数,都可以使用下划线来分隔数字. 1 2 3 4 //数值可读性 let value1 = 10_0 ...
- 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5) 博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...