Coins - HDU 2844 背包dp
来源:互联网 发布:2016淘宝搜索规则 编辑:程序博客网 时间:2024/04/28 21:18
Coins
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6962 Accepted Submission(s): 2829
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.
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 101 2 4 2 1 12 51 4 2 10 0
Sample Output
84
思路:二进制优化。
AC代码如下:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,dp[100010],val[110],num[110],ans;int main(){ int i,j,k,p; while(~scanf("%d%d",&n,&m) && n+m ) { for(i=1;i<=n;i++) scanf("%d",&val[i]); for(i=1;i<=n;i++) scanf("%d",&num[i]); memset(dp,0,sizeof(dp)); dp[0]=1; for(i=1;i<=n;i++) { k=1; while(num[i]>=k) { p=val[i]*k; for(j=m;j>=p;j--) if(dp[j-p]==1) dp[j]=1; num[i]-=k; k*=2; } if(num[i]) { p=val[i]*num[i]; for(j=m;j>=p;j--) if(dp[j-p]==1) dp[j]=1; } } ans=0; for(i=1;i<=m;i++) ans+=dp[i]; printf("%d\n",ans); }}
0 0
- Coins - HDU 2844 背包dp
- hdu 2844 Coins(DP, 背包)
- HDU 2844 Coins(DP 背包)
- hdu 2844 coins DP多重背包
- hdu 2844 Coins 背包
- hdu 2844 Coins(dp 多重背包 二进制优化)
- [HDU 2844 Coins]DP+二进制优化+多重背包
- HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)
- hdu 2844 Coins dp
- hdu 2844 Coins DP
- hdu 2844 Coins dp
- hdu 2844 Coins 多重背包
- hdu 2844 Coins 多重背包
- HDU 2844 Coins -- 多重背包
- hdu 2844 Coins - 多重背包
- hdu 2844 Coins(多重背包)
- hdu 2844 Coins 多重背包
- Coins hdu 多重背包 2844
- 偶数求和(杭电2015)
- 指向类成员函数的指针
- Windows下CMD命令行和Linux下命令行的一些使用总结
- 学生信息管理系统问题总结(一)
- “文件大小”与“所占空间”的差别
- Coins - HDU 2844 背包dp
- OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from libiconv
- 山寨版铝合金电缆都有哪些先天的弊端和不足
- HNU 12845 Ballot Analyzing Device
- VC操作Excel文件编程相关内容总结
- servlet 的实现方法
- [信号处理技术]关于EMD的产生
- The Slow Query Log
- Linux实现的IEEE 802.1Q VLAN