题目传送门

题意:你去一个商店购买一个价值为T的物品,市场上有n种流通的硬币,面值分别为V1,V2..Vn (1<=Vi<=120)。John有Ci个面值为Vi的硬币(0<=Ci<=10000)。店主有无限多的硬币,并总按最优方案找零。
问你最少使用多少个硬币(包括店主找零的)

思路:完全背包加多重背包。

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <vector>#define MAXN 200010
#define MAXE 210
#define INF 1000000000
#define MOD 10001
#define LL long long
#define ULL unsigned long long
#define pi 3.14159using namespace std;int dp[MAXN];
int v[MAXE];
int w[MAXE];
int vis[MAXN];int main() {std::ios::sync_with_stdio(false);int n, m;cin >> n >> m;int max_v = 0;for (int i = 0; i < n; ++i) {cin >> v[i];max_v = max(max_v, v[i]);v[i + n] = -v[i];}for (int i = 0; i < n; ++i) {cin >> w[i];}memset(dp, -1, sizeof(dp));dp[0] = 0;for (int i = 0; i < n; ++i) {memset(vis, 0, sizeof(vis));for (int j = v[i]; j <= m + 30000; ++j) {if (dp[j - v[i]] != -1 && (dp[j - v[i]] + 1 < dp[j] || dp[j] == -1) && vis[j - v[i]] < w[i]) {dp[j] = dp[j - v[i]] + 1;vis[j] = dp[j - v[i]] + 1;}}}for (int i = n; i < 2 * n; ++i) {for (int j = m + 30000 + v[i]; j >= 0; --j) {if (dp[j - v[i]] != -1 && (dp[j - v[i]] + 1 < dp[j] || dp[j] == -1)) {dp[j] = dp[j - v[i]] + 1;}}}cout << dp[m] << endl;return 0;
}

The Fewest Coins POJ - 3260相关推荐

  1. 【题目记录】——POJ 3260 The Fewest Coins 混合背包

    POJ 3260 The Fewest Coins 题目地址[POJ 3260 The Fewest Coins] 题意:John要去买价值为m的商品. 现在的货币系统有n种货币,对应面值为val[1 ...

  2. 洛谷P2851 [USACO06DEC]The Fewest Coins G 题解

    洛谷P2851 [USACO06DEC]The Fewest Coins G 题解 题目链接:P2851 [USACO06DEC]The Fewest Coins G 题意: Farmer John ...

  3. [USACO06DEC]The Fewest Coins G(混合背包)

    [USACO06DEC]The Fewest Coins G 题目描述 Farmer John has gone to town to buy some farm supplies. Being a ...

  4. The Fewest Coins (混合背包)

    有的物品只可以取一次或不取(基本的0-1背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包),就是混合背包问题. The Fewest Coins 题意: 农夫John ...

  5. The Fewest Coins(多重背包+完全背包)

    The Fewest Coins(多重背包+完全背包) Farmer John has gone to town to buy some farm supplies. Being a very eff ...

  6. poj 3260 The Fewest Coins(多重背包+完全背包)

    http://poj.org/gotoproblem?pid=3260 (1)多重背包的处理方式:转化为分组背包(1,2,4,8,余数).具体细节参见代码: scanf("%d", ...

  7. POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)

    题意:FJ身上有各种硬币,但是要买m元的东西,想用最少的硬币个数去买,且找回的硬币数量也是最少(老板会按照最少的量自动找钱),即掏出的硬币和收到的硬币个数最少. 思路:老板会自动找钱,且按最少的找,硬 ...

  8. Coins POJ - 1742(题解)

    原题 http://poj.org/problem?id=1742 题目大意 给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数. 题目分析 多重背包模板题,这里讲一下用一维dp来解这道题.与完 ...

  9. Coins POJ - 1742(多重背包+是否装满问题)

    题意: 给定n种面值的硬币面值分别为WiW_{i}Wi​个数为CiC_{i}Ci​,问用这些硬币可以组成1~m之间的多少面值. 题目: People in Silverland use coins.T ...

最新文章

  1. 一个简单的tcpserver
  2. HALCON标定倾斜安装镜头
  3. 人生百味,浓缩到最后就是一个淡字
  4. 《软件工程课程总结》
  5. Android文件操作中的openFileOutPut和openFileInput
  6. led显示屏背景墙设计_室内LED 显示屏室内安装设计
  7. 倒计时5天:5G还是6G?
  8. 成为Java流大师–第1部分:创建流
  9. mysql5.7.17二进制包_mysql5.7二进制包安装方法
  10. 父类与子类间的隐藏与重写
  11. 【数值分析】基础理论归纳
  12. 隐式连接时,windows下VS(包括2005、2008等)下配置OpenCV动态库的步骤
  13. java多线程条件变量_30秒带你读懂Java并发包工具(JUC)之Condition(并发条件变量)...
  14. 关系分析可视化插件-Cytoscape
  15. Android客户端登录注册模块
  16. moses 编译_Moses 训练步骤
  17. virtual 关键字
  18. [:,None]和[None,:]
  19. Ardunio下的STM32串口通信
  20. unity 安卓应用名称多语言本地化

热门文章

  1. webpack 5高级配置优化
  2. texstudio设置暗黑主题
  3. 本地服务器上传文件,本地服务器上传文件
  4. Latex排版,表格标题总是出现在下方的解决方案
  5. 基于React和fabricjs开发的在线名片、海报设计器,大前端项目在线图片编辑器源码分享
  6. 【CV】MobileNet:使用深度可分离卷积实现用于嵌入式设备的 CNN 架构
  7. Windows搭建幼麟麻将运行环境
  8. 画图软件修改图片分辨率
  9. conver(array)
  10. 阿里云域名配置以及https证书(ssl证书)配置