//给出Xiaoqian的钱币的价值和其身上有的每种钱的个数
//商家的每种钱的个数是无穷,xiaoqian一次最多付20000
//问如何付钱交易中钱币的个数最少
//Xiaoqian是多重背包
//商家是全然背包
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std ;
const int maxn = 20010 ;
const int inf = 0x3f3f3f3f ;
int dp[maxn] ;
int dp_1[maxn] ;
int c[maxn],v[maxn] ;
int n , t ;int cas = 0 ;
int main()
{
//freopen("in.txt" ,"r" , stdin) ;
while(scanf("%d%d",&n , &t) &&(n+t))
{
for(int i = 1;i <= n;i++)
scanf("%d" , &v[i]) ;
for(int i = 1;i <= n;i++)
scanf("%d" , &c[i]) ; for(int i = 1;i < maxn;i++)
dp[i] = dp_1[i] = inf ;
dp_1[0] = 0 ; dp[0] = 0 ; for(int i = 1;i <= n;i++)
for(int j = v[i] ; j < maxn ;j++)
dp_1[j] = min(dp_1[j], dp_1[j-v[i]] + 1) ; for(int i = 1;i <= n;i++)
{
for(int k = 1;k <= c[i];k*=2)
{
for(int j = maxn - 1;j >= k*v[i];j--)
dp[j] = min(dp[j] , dp[j-k*v[i]] + k) ;
c[i]-=k;
}
for(int j = maxn-1;j >= c[i]*v[i];j--)
dp[j] = min(dp[j] , dp[j - c[i]*v[i]] + c[i]) ;
} int ans = inf;
for(int i = t; i <= maxn -10;i++)
if(dp[i] != inf && dp_1[i - t] != inf)
ans = min(dp[i] + dp[i-t] , ans) ; printf("Case %d: " ,++cas) ;
if(ans == inf)puts("-1") ;
else cout<<ans<<endl;
}
}

hdu3591The trouble of Xiaoqian 多重背包+全然背包的更多相关文章

  1. HDU 3591 The trouble of Xiaoqian(多重背包+全然背包)

    HDU 3591 The trouble of Xiaoqian(多重背包+全然背包) pid=3591">http://acm.hdu.edu.cn/showproblem.php? ...

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

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

  3. B 维背包+完全背包 Hdu2159

    <span style="color:#3333ff;">/* ---------------------------------------------------- ...

  4. 01背包模板、全然背包 and 多重背包(模板)

    转载请注明出处:http://blog.csdn.net/u012860063 贴一个自觉得解说不错的链接:http://www.cppblog.com/tanky-woo/archive/2010/ ...

  5. HDU_3591_(多重背包+完全背包)

    The trouble of Xiaoqian Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  6. POJ 3260 多重背包+完全背包

    前几天刚回到家却发现家里没网线 && 路由器都被带走了,无奈之下只好铤而走险尝试蹭隔壁家的WiFi,不试不知道,一试吓一跳,用个手机软件简简单单就连上了,然后在浏览器输入192.168 ...

  7. HDU 1248 寒冰王座(全然背包:入门题)

    HDU 1248 寒冰王座(全然背包:入门题) http://acm.hdu.edu.cn/showproblem.php?pid=1248 题意: 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票 ...

  8. HDU 4508 湫湫系列故事——减肥记I(全然背包)

    HDU 4508 湫湫系列故事--减肥记I(全然背包) http://acm.hdu.edu.cn/showproblem.php?pid=4508 题意: 有n种食物, 每种食物吃了能获得val[i ...

  9. A_全然背包

    /* copyright: Grant Yuan algorithm: 全然背包 time : 2014.7.18 __________________________________________ ...

随机推荐

  1. Leetcode 491.递增子序列

    递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, 6, 7] ...

  2. 菜鸟之路——机器学习之SVM分类器学习理解以及Python实现

    SVM分类器里面的东西好多呀,碾压前两个.怪不得称之为深度学习出现之前表现最好的算法. 今天学到的也应该只是冰山一角,懂了SVM的一些原理.还得继续深入学习理解呢. 一些关键词: 超平面(hyper ...

  3. socket传输对象

    server public class Server{ private static int port = 8888; private static ServerSocket serverSocket ...

  4. HDU 4391 Paint The Wall(分块+延迟标记)

    Paint The Wall Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. BZOJ3999 [TJOI2015]旅游 【树剖 + 线段树】

    题目 为了提高智商,ZJY准备去往一个新世界去旅游.这个世界的城市布局像一棵树.每两座城市之间只有一条路径可 以互达.每座城市都有一种宝石,有一定的价格.ZJY为了赚取最高利益,她会选择从A城市买入再 ...

  6. Fabric 和 Sawtooth 技术分析(下)

    http://blog.talkingdata.com/?p=6172 在前一篇文章(Fabric和Sawtooth技术分析(上))中,我们着重跟大家分享了 Fabric 相关的内容,在本篇文章中,我 ...

  7. 【小技巧】树剖套线段树优化建图如何做到 O(nlogn)

    前提:用树剖套线段树优化树链连边.例题:bzoj4699 我们说树剖的时间复杂度是 $O(n\times log(n))$,是因为访问一条链时需要经过 $log(n)$ 级别条重链,对于每条重链还需要 ...

  8. VMWare VMNet 8 的配置使用

    网上有很多讲解VMWare网络原理的文章,我在这里就不在赘述,有兴趣的朋友可以自己搜 本章主要介绍下我们使用VM最常用的两种网络模式,VMNet 0 和 VMNet 8 本文均为原创,如需转载请标明, ...

  9. ANT总结

    1 Ant是什么? Apache Ant 是一个基于 Java的生成工具.生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式).随着应用程序的生成 ...

  10. Codevs 2460 == BZOJ 1036 树的统计

     2460 树的统计 2008年省队选拔赛浙江 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一棵树上有n个节点,编号分别为1 ...