博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU - Coins(完全背包)
阅读量:1999 次
发布时间:2019-04-28

本文共 1936 字,大约阅读时间需要 6 分钟。

题目链接:

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Problem Description

Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hibix opened purse and found there were some coins. He decided to buy a very nice watch in a nearby shop. He wanted to pay the exact price(without change) and he known the price would not more than m.But he didn't know the exact price of the watch.

You are to write a program which reads n,m,A1,A2,A3...An and C1,C2,C3...Cn corresponding to the number of Tony's coins of value A1,A2,A3...An then calculate how many prices(form 1 to m) Tony can pay use these coins.

Input

The input contains several test cases. The first line of each test case contains two integers n(1 ≤ n ≤ 100),m(m ≤ 100000).The second line contains 2n integers, denoting A1,A2,A3...An,C1,C2,C3...Cn (1 ≤ Ai ≤ 100000,1 ≤ Ci ≤ 1000). The last test case is followed by two zeros.

Output

For each test case output the answer on a single line.

Sample Input

3 10

1 2 4 2 1 1
2 5
1 4 2 1
0 0

Sample Output

8

4

Problem solving report:

Description: 给出每种硬币的价值和每种硬币的个数,求在m以内能组成多少种价值。

Problem solving: 完全背包。只不过加了个数的限制,用cnt来表示已使用的i硬币的个数,超过限制以后就停止使用这种硬币。

#include 
using namespace std;int v[105], w[105], dp[100005], cnt[100005];int main() { int m, n; while (~scanf("%d%d", &n, &m), n + m) { memset(dp, 0, sizeof(dp)); for (int i = 0; i < n; i++) scanf("%d", v + i); for (int i = 0; i < n; i++) scanf("%d", w + i); dp[0] = 1; int ans = 0; for (int i = 0; i < n; i++) { memset(cnt, 0, sizeof(cnt)); for (int j = v[i]; j <= m; j++) { if (!dp[j] && dp[j - v[i]] && cnt[j - v[i]] < w[i]) { ans++; dp[j] = 1; cnt[j] = cnt[j - v[i]] + 1; } } } printf("%d\n", ans); } return 0;}

转载地址:http://wqftf.baihongyu.com/

你可能感兴趣的文章
muduo网络库——详解muduo多线程模型
查看>>
muduo网络库源码分析——整体架构
查看>>
LeetCode 131.Palindrome Partitioning (分割回文串)
查看>>
LeetCode 132.Palindrome Partitioning II (分割回文串 II)
查看>>
LeetCode 134.Gas Station (加油站)
查看>>
LeetCode 135.Candy (分发糖果)
查看>>
Python之命名元组 (namedtuple)
查看>>
使用libpcap过滤arp
查看>>
微软C/C++ 编译器选项参考
查看>>
VS 2005使用map文件查找程序崩溃原因
查看>>
VC下发布的Release版程序的异常捕捉
查看>>
DivX和XviD不能不说的故事
查看>>
C++异常中的堆栈跟踪
查看>>
使用dbghelp获取调用堆栈--release下的调试方法
查看>>
星巴克高管称Windows 8将无足轻重
查看>>
三层网络体系结构的特点和实现方法
查看>>
调试Release发布版程序的Crash错误(一)
查看>>
在VC环境中调试跟踪变量
查看>>
SetUnhandledExceptionFilter使用
查看>>
YUV视频格式到RGB32格式转换的速度优化 中篇
查看>>