poj 3260 The Fewest Coins(多重背包+完全背包)
http://poj.org/gotoproblem?pid=3260
(1)多重背包的处理方式:转化为分组背包(1,2,4,8,余数)。具体细节参见代码:
scanf("%d", &num[i]); tn=num[i]; while(tn>0) {if(tn<x) {map[i][tot++]=tn;break;}map[i][tot++]=x;tn-=x; x*=2; }
(2)接下来是装多重背包,注意细节 for(j=0;map[i][j];j++)
而不是 for(j=1;map[i][j];j++)
进而用万群被白调整,注意循环顺序:for(k=V-mon[i];k>=0;k--)
而不是 for(k=0;k<=V-mon[i];k++)
(3)悬而未解之问:取上限为V=10000就AC了,不合常理,应该是数据问题吧。。。
有待解决。
具体代码:
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; const int N=11000; const int Inf=1<<29; int n, m, V; int mon[120], num[120]; int map[120][20]; int dp[N]; int main() {int i, j, k;while(scanf("%d%d", &n, &m)!=EOF){for(i=1;i<=n;i++) scanf("%d", &mon[i]);memset(map, 0, sizeof(map));for(i=1;i<=n;i++){int x=1, tot=0, tn;scanf("%d", &num[i]);tn=num[i];while(tn>0){if(tn<x) {map[i][tot++]=tn;break;}map[i][tot++]=x;tn-=x; x*=2;}}V=10000;for(i=0;i<=V;i++) dp[i]=Inf;dp[0]=0;for(i=1;i<=n;i++)for(j=0;map[i][j];j++)for(k=V;k>=map[i][j]*mon[i];k--)dp[k]=min(dp[k], dp[k-map[i][j]*mon[i]]+map[i][j]);for(i=1;i<=n;i++)for(k=V-mon[i];k>=0;k--)dp[k]=min(dp[k], dp[k+mon[i]]+1);if(dp[m]==Inf) printf("-1\n");else printf("%d\n", dp[m]);}return 0; }
转载于:https://www.cnblogs.com/tim11/archive/2012/08/16/2643048.html
poj 3260 The Fewest Coins(多重背包+完全背包)相关推荐
- 【题目记录】——POJ 3260 The Fewest Coins 混合背包
POJ 3260 The Fewest Coins 题目地址[POJ 3260 The Fewest Coins] 题意:John要去买价值为m的商品. 现在的货币系统有n种货币,对应面值为val[1 ...
- POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)
题意:FJ身上有各种硬币,但是要买m元的东西,想用最少的硬币个数去买,且找回的硬币数量也是最少(老板会按照最少的量自动找钱),即掏出的硬币和收到的硬币个数最少. 思路:老板会自动找钱,且按最少的找,硬 ...
- [USACO06DEC]The Fewest Coins G(混合背包)
[USACO06DEC]The Fewest Coins G 题目描述 Farmer John has gone to town to buy some farm supplies. Being a ...
- 【BZOJ 1716】 [Usaco2006 Dec]The Fewest Coins 找零钱(背包dp)
题目 Description 农夫John想到镇上买些补给.为了高效地完成任务,他想使硬币的转手次数最少.即使他交付的硬币数与找零得到的的硬币数最少. John想要买T(1<=T<=100 ...
- 【POJ3260】The Fewest Coins 多重背包+完全背包
A来B处买东西,价值M元,有N种钱,每种钱A有一定数量,而B有无限数量. 求最少用多少张钞票可以满足交易,比如样例,A出50+25,B找5,即可满足,需要3张. A用多重背包转移状态,B用完全背包. ...
- The Fewest Coins(多重背包+完全背包)
The Fewest Coins(多重背包+完全背包) Farmer John has gone to town to buy some farm supplies. Being a very eff ...
- POJ 3260 多重背包+完全背包
前几天刚回到家却发现家里没网线 && 路由器都被带走了,无奈之下只好铤而走险尝试蹭隔壁家的WiFi,不试不知道,一试吓一跳,用个手机软件简简单单就连上了,然后在浏览器输入192.168 ...
- The Fewest Coins (混合背包)
有的物品只可以取一次或不取(基本的0-1背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包),就是混合背包问题. The Fewest Coins 题意: 农夫John ...
- 【POJ】 1014 Dividing(多重背包,优化)
[POJ] 1014 Dividing(多重背包,优化) [题目链接]http://poj.org/problem?id=1014 题目 Description Marsha and Bill own ...
最新文章
- 1.4亿围观!宝藏副教授火速走红:如果不喜欢我的研究方向,我可以改!
- 光遇自动弹琴脚本代码_光遇弹琴辅助软件下载-光遇自动弹琴脚本代码下载v1.0_86PS软件园...
- 蔚蓝 游戏 android,永远的蔚蓝星球
- 数据库原理上机实验内容报告代码
- 重磅干货免费下载!阿里云RDS团队论文被数据库顶会SIGMOD 2018收录
- Nginx服务的ssl认证和htpasswd认证
- 94. autoload
- 漫游飞行_涨知识了,手机的飞行模式还能这么用?
- Java是传值还是传引用
- golang生成随机数
- R语言构建logistic回归模型:模型系数(model coefficient)、模型总结信息(summary)、模型评估(偏差deviance计算、伪R方计算( pseudo R-squared)
- 目标检测 (Detection) 算法综述
- 微信公众号页面中监听手机“返回”,并回到公众号里
- intellij idea maven项目jdk版本会自动重置
- mysql root误删_mysql 误删root
- 稿定科技内推|稿定让设计更简单,只要你来,稿定就能给你无限可能
- 计算机等级二级c语言英文,计算机等级考试二级C语言考试大纲(国外英文资料).doc...
- allure如何设置新logo
- 仿ofo单车做一个轮播效果
- tcpdump,tshark常用命令(一)