http://poj.org/problem?id=1742 (题目链接)

题意

  给出n钟纸币,每种纸币面值为a[i],数量为c[i],问能够成多少数值小于等于m的数。

Solution

  先想到了容斥,然并卵。又想到了多重背包,这不是经典模型吗。。毫不犹豫二进制分组,结果就TLE了。。于是写了发nm的。。

细节

  多组数据清空数组。

代码

// poj1742
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf 2147483640
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
using namespace std; const int maxn=200,maxm=100010;
int f[maxm],w[maxm],a[maxn],c[maxn];
int n,m,tot,bin[30]; void Divide() {
tot=0;
for (int i=1;i<=n;i++) {
for (int j=0;;j++) {
if (bin[j]>c[i]) break;
c[i]-=bin[j];
w[++tot]=bin[j]*a[i];
}
if (c[i]) w[++tot]=c[i]*a[i];
}
}
int main() {
bin[0]=1;for (int i=1;i<=20;i++) bin[i]=bin[i-1]<<1;
while (scanf("%d%d",&n,&m)!=EOF && n && m) {
for (int i=1;i<=n;i++) scanf("%d",&a[i]);
for (int i=1;i<=n;i++) scanf("%d",&c[i]);
memset(f,0,sizeof(f));f[0]=1;
for (int i=1;i<=n;i++) {
memset(w,0,sizeof(w));
for (int j=0;j<=m-a[i];j++)
if (f[j] && !f[j+a[i]] && w[j]+1<=c[i]) f[j+a[i]]=1,w[j+a[i]]=w[j]+1;
}
int ans=0;
for (int i=1;i<=m;i++) if (f[i]) ans++;
printf("%d\n",ans);
}
return 0;
}

【poj1742】 Coins的更多相关文章

  1. 【CF944G】Coins Exhibition DP+队列

    [CF944G]Coins Exhibition 题意:Jack去年参加了一个珍稀硬币的展览会.Jack记得一共有 $k$ 枚硬币,这些硬币排成一行,从左到右标号为 $1$ 到 $k$ ,每枚硬币是正 ...

  2. 【题解】Coins(二进制拆分+bitset)

    [题解]Coins(二进制拆分+bitset) [vj] 俗话说得好,bitset大法吼啊 这道题要不是他多组数据卡死了我复杂度算出来等于九千多万的选手我还不会想这种好办法233 考虑转移的实质是怎样 ...

  3. 【POJ2096】Collecting Bugs 期望

    [POJ2096]Collecting Bugs Description Ivan is fond of collecting. Unlike other people who collect pos ...

  4. 【动态规划】记忆搜索(C++)

    前几天还在踟蹰我应该注重培养做项目的能力还是修炼算法以及数据结构,然后发现这个场景有点似曾相识.曾几何时的一个月里,我有三件比较重要的事情要解决,在那个月刚开始的时候我一直在想我应该从那件事情开始着手 ...

  5. 【Java】-NO.16.EBook.4.Java.1.004-【疯狂Java讲义第3版 李刚】- 内部类

    1.0.0 Summary Tittle:[Java]-NO.16.EBook.4.Java.1.004-[疯狂Java讲义第3版 李刚]- 内部类 Style:EBook Series:Java S ...

  6. 【BZOJ3312】[Usaco2013 Nov]No Change 状压DP+二分

    [BZOJ3312][Usaco2013 Nov]No Change Description Farmer John is at the market to purchase supplies for ...

  7. LeetCode:零钱兑换【322】【DP】

    LeetCode:零钱兑换[322][DP] 题目描述 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成 ...

  8. 【DataStructure】Description and Introduction of Tree

    [Description] At ree is a nonlinear data structure that models a hierarchical organization. The char ...

  9. 【LeetCode】数学(共106题)

    [2]Add Two Numbers (2018年12月23日,review) 链表的高精度加法. 题解:链表专题:https://www.cnblogs.com/zhangwanying/p/979 ...

随机推荐

  1. HADOOP安装指南-Ubuntu15.10和hadoop2.7.2

    Ubuntu15.10中安装hadoop2.7.2安装手册 太初 目录 1.      Hadoop单点模式... 2 1.1        安装步骤... 2 0.环境和版本... 2 1.在ubu ...

  2. SQL SERVER 2012 执行计划走嵌套循环导致性能问题的案例

    开发人员遇到一个及其诡异的的SQL性能问题,这段完整SQL语句如下所示: declare @UserId             INT declare @PSANo              VAR ...

  3. $.parseJson 在 firefox 下返回 null 的问题

    最近调查一个浏览器兼容性问题,在 IE, chrome下都运行正常,但是在 firefox 下运行时: $.parseJson(xxx) 返回 null,所以导致了 无法正常运行,调查的结果是因为 返 ...

  4. x01.Weiqi.10: 死活问题

    估计得不错,点目后,仅一个方法:UpdateMeshes5() 就完美解决了梅花六.刀把五.斗笠四.盘角曲四等死活问题.先来看看效果图: 其代码如下: void UpdateMeshes5(bool ...

  5. 在CentOS安装PHP5.6

    简单介绍一下,如何在CentOS上安装PHP5.6. 配置yum源 追加CentOS 6.5的epel及remi源. # rpm -Uvh http://ftp.iij.ad.jp/pub/linux ...

  6. 深度理解Jquery 中 offset() 方法

    参考原文:深度理解Jquery 中 offset() 方法

  7. [COPY] How to become a hacker

    Engish version copied from here Why This Document? As editor of the Jargon File and author of a few ...

  8. 基于ionic+cordova+angularJs从零开始搭建自己的移动端H5 APP

    这里详细介绍下如何用ionic+cordova+angularjs搭建自己的移动端app,包括环境搭建,框架使用等,具体项目已放置在github上,可下载下来自行启动. 下载地址:https://gi ...

  9. 洛谷P1373 小a和uim之大逃离[背包DP]

    题目背景 小a和uim来到雨林中探险.突然一阵北风吹来,一片乌云从北部天边急涌过来,还伴着一道道闪电,一阵阵雷声.刹那间,狂风大作,乌云布满了天空,紧接着豆大的雨点从天空中打落下来,只见前方出现了一个 ...

  10. sqlServer数据库实现不同库之间表迁移

    (1) (2) 点击开始便进行数据库到库的迁移.