http://poj.org/problem?id=3260

这个题目有点小难,我开始没什么头绪,感觉很乱。

后来看了题解,感觉豁然开朗。

题目大意:就是这个人去买东西,东西的价格是T,这个人拥有的纸币和数量。让你求这个人买东西的纸币量加上老板找给他的纸币量最少是多少。

这个老板用于这个人拥有的纸币种类,数量是无限。

思路:

思路就是这个人看成多重背包,老板看成完全背包,f1[i] 表示这个人花了 i 的钱用的最少的纸币。f2[i] 表示老板凑出 i 的钱用的最少的纸币。

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
#include <vector>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
const int maxn = 2e5 + ;
int N, V;
int weight[maxn], num[maxn];
int f1[maxn], f2[maxn], V1;
void zeroonepack(int weight, int val, int f[]) {
for (int i = V; i >= weight; i--) {
f[i] = min(f[i], f[i - weight] + val);
}
} void completepack(int weight, int val, int f[]) {
for (int i = weight; i <= V; i++) {
f[i] = min(f[i], f[i - weight] + val);
}
} void multiplepack(int weight, int val, int count, int f[]) {
if (count*weight >= V) completepack(weight, val, f);
else {
int t = ;
while (t < count) {
zeroonepack(weight*t, val*t, f);
count -= t;
t *= ;
}
zeroonepack(count*weight, count*val, f);
}
} int main() {
while (scanf("%d%d", &N, &V1) != EOF) {
int max_val = ;
for (int i = ; i <= N; i++) {
scanf("%d", &weight[i]);
max_val = max(max_val, weight[i]);
}
for (int i = ; i <= N; i++) scanf("%d", &num[i]);
V = max_val * max_val + V1 + ;
memset(f1, inf, sizeof(f1));
memset(f2, inf, sizeof(f2));
f1[] = , f2[] = ;
for (int i = ; i <= N; i++) {
multiplepack(weight[i], , num[i], f1);//顾客
}
for (int i = ; i <= N; i++) {
completepack(weight[i], , f2);
}
//printf("v=%d v1=%d\n", V, V1);
int ans = inf;
for (int i = ; i <= V - V1; i++) {
if (f1[V1 + i] != inf && f2[i] != inf) {
ans = min(f1[V1 + i] + f2[i], ans);
}
}
if (ans != inf) printf("%d\n", ans);
else printf("-1\n");
}
return ;
}

完全背包和多重背包的混合 F - The Fewest Coins的更多相关文章

  1. 背包问题(01背包,完全背包,多重背包(朴素算法&&二进制优化))

    写在前面:我是一只蒟蒻~~~ 今天我们要讲讲动态规划中~~最最最最最~~~~简单~~的背包问题 1. 首先,我们先介绍一下  01背包 大家先看一下这道01背包的问题  题目  有m件物品和一个容量为 ...

  2. ACM__01背包,完全背包,多重背包

    今天写题的时候碰到了一道完全背包题,可是没有看出来,乱写了一通,浪费了一个晚上,顺便复习一下背包的知识 01背包 每种物品只能选择一次或者不选,求背包容量内的最大价值 先给出状态转移方程: f[i][ ...

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

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

  4. 【板+背包】多重背包 HDU Coins

    http://acm.hdu.edu.cn/showproblem.php?pid=2844 [题意] 给定n种价值为Ci,个数为Wi的硬币,问在1~V中的这些数中哪些数能由这些硬币组成? [思路] ...

  5. 动态规划——背包问题python实现(01背包、完全背包、多重背包)

    目录 01背包问题 完全背包问题 多重背包问题 参考: 背包九讲--哔哩哔哩 背包九讲 01背包问题 01背包问题 描述: 有N件物品和一个容量为V的背包. 第i件物品的体积是vi,价值是wi. 求解 ...

  6. hdu 2191 (多重背包+二进制优化)

    Problem Description 急!灾区的食物依然短缺!为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品, ...

  7. hdu_2844_Coins(多重背包)

    题目连接:hdu_2844_Coins 题意:给你n个硬币的价值和对应的数量,问你从1到m有那些数能组合出来 题解:如果我们将硬币的价值看成一个物品的容量和价值,那么对应1-m,如果dp[i]==i, ...

  8. luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并

    LINK:Eden 的新背包问题 就是一个多重背包 每次去掉一个物品 询问钱数为w所能买到的最大值. 可以对于每次Q暴力dp 利用单调队列优化多重背包 这样复杂度是Qnm的. 发现过不了n==10的点 ...

  9. Buns(dp+多重背包)

    C. Buns time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...

随机推荐

  1. 一个spring 基本知识的微博(怎么加载多个xml、多个property文件、aop配置、监视器)

    http://blog.sina.com.cn/s/blog_61c5866d0100ev44.html

  2. termux上安装lxml失败

    想试试在手机上随时可以接收到各个平台上最新的消息,于是打算在qpython上写个python的爬虫,安装bs4后,在安装lxml时出现了问题. qpython失败后,改用termux试一下,结果出现了 ...

  3. AJ整理问题之:copy,对象自定义copy 什么是property

    AJ分享,必须精品 copy copy的正目的 copy 目的:建立一个副本,彼此修改,各不干扰 Copy(不可变)和MutableCopy(可变)针对Foundation框架的数据类型. 对于自定义 ...

  4. python2.7安装numpy和pandas

    扩展官网安装numpy,use [v][p][n]下载得会比较快 然后在CMD命令行下进入该文件夹然后输入pip install +numpy的路径+文件名.比如我的是:pip install num ...

  5. cxGrid增加一栏显示checkBox的设置方法

    鉴于本人首次设定cxGrid的CheckBox的时候费了很大劲,发现很多人都会碰到这个问题,现在总结一下,以供各位互相学习借鉴. 步骤如下(不分先后): 1. cxGrid添加完自己所需的所有字段后, ...

  6. C - League of Leesins

    乱搞一发,,竟然过了!!! 题目大意:输入一个整数n,然后n-2行,每一行3个数字,表示一个数组中连续的3个数字,然后将这3个数字的顺序打乱,然后再将这个n-2行打乱,要求还原数组. 题解:先找到前3 ...

  7. 如何可视化深度学习网络中Attention层

    前言 在训练深度学习模型时,常想一窥网络结构中的attention层权重分布,观察序列输入的哪些词或者词组合是网络比较care的.在小论文中主要研究了关于词性POS对输入序列的注意力机制.同时对比实验 ...

  8. [PHP][thinkphp5] 学习二:路由、配置调用、常量定义调用

    路由: 其实TP5就是一个集多家框架所长而成的,感觉失去了自己的特色!路由这块呢类似于laravel框架!废话不说直接上码! 路由配置,类似laravel,就在route.php文件里配置路由(文件所 ...

  9. MySQL笔记总结-DDL语言

    DDL语言 数据类型 一.数值型 1.整型 tinyint.smallint.mediumint.int/integer.bigint 1 2 3 4 8 特点: ①都可以设置无符号和有符号,默认有符 ...

  10. mysql参数max_binlog_cache_size设置不当引发的血案

    日常运维中的坑真是防不胜防,不一小心就遇到别人给你挖的坑.最近又遇到经验不足的DBA不知道从哪拷贝的配置文件(据说是当时参加某培训机构视频培训是资料里的模板,真的是误人子弟呀),其中把max_binl ...