题意是给你几个数,再给你这几个数的可以用的个数,然后随机找几个数来累加,

让我算可以累加得到的数的种数!

解题思路:先将背包初始化为-1,再用多重背包计算,最后检索,若bb[i]==i,则说明i这个数是可以得到的!一个循环计算可以达到的数的个数,最后输出就好了!

#include<stdio.h>

#define max(a,b) a>b?a:b

int bb[500000];

int vv;

void shun(int cost,int weight)

{


int i;


for(i=cost;i<=vv;i++)


bb[i]=max(bb[i],bb[i-cost]+weight);

}

void ni(int cost,int weight)

{


int i;


for(i=vv;i>=cost;i--)


bb[i]=max(bb[i],bb[i-cost]+weight);

}

int main()

{


int n,i,k,v[5000],amount[5000],ans;


while(scanf("%d%d",&n,&vv),n+vv)


{


for(i=1;i<=vv;i++)


bb[i]=-1;


for(i=0;i<n;i++)


scanf("%d",&v[i]);


for(i=0;i<n;i++)


scanf("%d",&amount[i]);


for(i=0;i<n;i++)


{


if(amount[i]*v[i]>=vv)


shun(v[i],v[i]);


else


{


k=1;


while(k<amount[i])


{


ni(k*v[i],k*v[i]);


amount[i]-=k;


k*=2;


}


ni(amount[i]*v[i],amount[i]*v[i]);


}


}


ans=0;


for(i=1;i<=vv;i++)


if(bb[i]==i)


ans++;


printf("%d\n",ans);


}


return 0;

}

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844

hdu 2844 Coins (多重背包)的更多相关文章

  1. hdu 2844 Coins (多重背包+二进制优化)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844 思路:多重背包 , dp[i] ,容量为i的背包最多能凑到多少容量,如果dp[i] = i,那么代表 ...

  2. HDu -2844 Coins多重背包

    这道题是典型的多重背包的题目,也是最基础的多重背包的题目 题目大意:给定n和m, 其中n为有多少中钱币, m为背包的容量,让你求出在1 - m 之间有多少种价钱的组合,由于这道题价值和重量相等,所以就 ...

  3. HDU - 2844 Coins(多重背包+完全背包)

    题意 给n个币的价值和其数量,问能组合成\(1-m\)中多少个不同的值. 分析 对\(c[i]*a[i]>=m\)的币,相当于完全背包:\(c[i]*a[i]<m\)的币则是多重背包,考虑 ...

  4. HDU 2844 Coins (多重背包计数 空间换时间)

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  5. hdu 2844 coins(多重背包 二进制拆分法)

    Problem Description Whuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. On ...

  6. hdu 2844 Coins 多重背包(模板) *

    Coins                                                                             Time Limit: 2000/1 ...

  7. HDU 2844 Coin 多重背包

    Coins Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  8. 背包系列练习及总结(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 ...

  9. HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)

    HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化) 题意分析 先把每种硬币按照二进制拆分好,然后做01背包即可.需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数 ...

  10. POJ 3260 The Fewest Coins(多重背包+全然背包)

    POJ 3260 The Fewest Coins(多重背包+全然背包) http://poj.org/problem?id=3260 题意: John要去买价值为m的商品. 如今的货币系统有n种货币 ...

随机推荐

  1. Python学习笔记一--字符串的使用

    一.基本操作 1. 合并字符串:“+” 2. 打印重复的字符串:"*"      3. 按位获取字符串中的字符:索引      4. 按位获取字符串中的子字符串:分片      5 ...

  2. 泛型编程、STL的概念、STL模板思想及其六大组件的关系,以及泛型编程(GP)、STL、面向对象编程(OOP)、C++之间的关系

    2013-08-11 10:46:39 介绍STL模板的书,有两本比较经典: 一本是<Generic Programming and the STL>,中文翻译为<泛型编程与STL& ...

  3. CentOS7.1 JDK安装 和 CentOS7.1配置yum源

    1.卸载自带OPENJDK #查看自身jdk java -verson #查看自身安装的java  rpm -qa | grep java #显示如下 python-javapackages-3.4. ...

  4. myhuiban会议,期刊,科研人员,计算机类会议大全

    http://www.myhuiban.com/ List of computer science conferences From Wikipedia, the free encyclopedia ...

  5. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.1

    Show that the inner product $$\bex \sef{x_1\wedge \cdots \wedge x_k,y_1\wedge \cdots\wedge y_k} \eex ...

  6. POJ 2481-Cows(BIT)

    题意: n个牛,每个牛对应一个区间,对于每个牛求n个区间有几个包含该牛的区间. 分析: 先 区间右边界从大到小排序,相同时左边界小到大,统计第i头牛即左边界在前i-1头左边界的正序数. #includ ...

  7. HDU 1561-The more, The Better(树状背包)

    题意: n个城堡,每个有一定的财富,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡,求应攻克哪m个城堡,获得最大财富. 分析:dp[i][j],以i为根的子树,攻克j个城堡,获得的 ...

  8. [OFBiz]简介 一

    1.What is Apache OFBiz?http://ofbiz.apache.org/ 2.概述http://baike.baidu.com/view/638900.html?fromTagl ...

  9. WebDriver 运行模式下使用rc 代码

    selenium2 对之前的rc 代码提供了兼容性接口,如果你之前的code 都是用rc 写,而现在又想摆脱要每次启动server,你只需要 略做修改即可.代码如下: public class Tes ...

  10. redhat mysql 远程开启

    2)开启远程接入.登录到数据库,对mysql.user进行操作 表Mysql.user记录了不同用户不同主机不同的权限.可通过命令查看: Select * from mysql.user : 插入新用 ...