The Fewest Coins POJ - 3260
题目传送门
题意:你去一个商店购买一个价值为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相关推荐
- 【题目记录】——POJ 3260 The Fewest Coins 混合背包
POJ 3260 The Fewest Coins 题目地址[POJ 3260 The Fewest Coins] 题意:John要去买价值为m的商品. 现在的货币系统有n种货币,对应面值为val[1 ...
- 洛谷P2851 [USACO06DEC]The Fewest Coins G 题解
洛谷P2851 [USACO06DEC]The Fewest Coins G 题解 题目链接:P2851 [USACO06DEC]The Fewest Coins G 题意: Farmer John ...
- [USACO06DEC]The Fewest Coins G(混合背包)
[USACO06DEC]The Fewest Coins G 题目描述 Farmer John has gone to town to buy some farm supplies. Being a ...
- The Fewest Coins (混合背包)
有的物品只可以取一次或不取(基本的0-1背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包),就是混合背包问题. The Fewest Coins 题意: 农夫John ...
- The Fewest Coins(多重背包+完全背包)
The Fewest Coins(多重背包+完全背包) Farmer John has gone to town to buy some farm supplies. Being a very eff ...
- poj 3260 The Fewest Coins(多重背包+完全背包)
http://poj.org/gotoproblem?pid=3260 (1)多重背包的处理方式:转化为分组背包(1,2,4,8,余数).具体细节参见代码: scanf("%d", ...
- POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)
题意:FJ身上有各种硬币,但是要买m元的东西,想用最少的硬币个数去买,且找回的硬币数量也是最少(老板会按照最少的量自动找钱),即掏出的硬币和收到的硬币个数最少. 思路:老板会自动找钱,且按最少的找,硬 ...
- Coins POJ - 1742(题解)
原题 http://poj.org/problem?id=1742 题目大意 给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数. 题目分析 多重背包模板题,这里讲一下用一维dp来解这道题.与完 ...
- Coins POJ - 1742(多重背包+是否装满问题)
题意: 给定n种面值的硬币面值分别为WiW_{i}Wi个数为CiC_{i}Ci,问用这些硬币可以组成1~m之间的多少面值. 题目: People in Silverland use coins.T ...
最新文章
- 一个简单的tcpserver
- HALCON标定倾斜安装镜头
- 人生百味,浓缩到最后就是一个淡字
- 《软件工程课程总结》
- Android文件操作中的openFileOutPut和openFileInput
- led显示屏背景墙设计_室内LED 显示屏室内安装设计
- 倒计时5天:5G还是6G?
- 成为Java流大师–第1部分:创建流
- mysql5.7.17二进制包_mysql5.7二进制包安装方法
- 父类与子类间的隐藏与重写
- 【数值分析】基础理论归纳
- 隐式连接时,windows下VS(包括2005、2008等)下配置OpenCV动态库的步骤
- java多线程条件变量_30秒带你读懂Java并发包工具(JUC)之Condition(并发条件变量)...
- 关系分析可视化插件-Cytoscape
- Android客户端登录注册模块
- moses 编译_Moses 训练步骤
- virtual 关键字
- [:,None]和[None,:]
- Ardunio下的STM32串口通信
- unity 安卓应用名称多语言本地化