The Fewest Coins POJ - 3260
完全背包+多重背包。基本思路是先通过背包分开求出"付出"指定数量钱和"找"指定数量钱时用的硬币数量最小值,然后枚举找的钱,那么付出的钱也随之确定,对于每个枚举出的找的钱可以得到一个答案,那么枚举所有可能的找的钱取答案的最大值即可。
这里有一个对于找钱上限的证明。如果不知道,也可以随便搞一个(比如以下用的10000,注意空间,试过5000可以过)。
错误记录:
4.多重背包优化中,把除以2写成<<=2,WA
3.多重背包打了暴力的,没有加优化,TLE
2.dp数组初始化为0x3f3f3f3f,但是anss(最终答案)初始化为0x6fffffff,最后判anss!=0x6fffffff,但即使没有答案anss也会被0x3f3f3f3f更新,WA
1.枚举找钱只到了1000,WA
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,T,v[],c[],p[],ans[],anss=0x3f3f3f3f;
int main()
{
int i,j;
scanf("%d%d",&n,&T);
memset(ans,0x3f,sizeof(ans));
memset(p,0x3f,sizeof(p));
for(i=;i<=n;i++)
scanf("%d",&v[i]);
for(i=;i<=n;i++)
scanf("%d",&c[i]);
p[]=;
for(i=;i<=;i++)
{
for(j=;j<=n;j++)
if(i>=v[j])
p[i]=min(p[i],p[i-v[j]]);
p[i]++;
}
ans[]=;
for(i=;i<=n;i++)
{
m=;
while(c[i]>)
{
if(m>c[i]) m=c[i];
c[i]=c[i]-m;
for(j=T+;j>=v[i]*m;j--)
{
ans[j]=min(ans[j],ans[j-v[i]*m]+m);
if(j>=T)
anss=min(anss,ans[j]+p[j-T]);
}
m<<=;
}
}
if(anss!=0x3f3f3f3f)
printf("%d",anss);
else
printf("-1");
return ;
}
The Fewest Coins POJ - 3260的更多相关文章
- POJ 3260 The Fewest Coins(多重背包+全然背包)
POJ 3260 The Fewest Coins(多重背包+全然背包) http://poj.org/problem?id=3260 题意: John要去买价值为m的商品. 如今的货币系统有n种货币 ...
- POJ 3260 The Fewest Coins(完全背包+多重背包=混合背包)
题目代号:POJ 3260 题目链接:http://poj.org/problem?id=3260 The Fewest Coins Time Limit: 2000MS Memory Limit: ...
- POJ3260The Fewest Coins[背包]
The Fewest Coins Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6299 Accepted: 1922 ...
- POJ3260——The Fewest Coins(多重背包+完全背包)
The Fewest Coins DescriptionFarmer John has gone to town to buy some farm supplies. Being a very eff ...
- (混合背包 多重背包+完全背包)The Fewest Coins (poj 3260)
http://poj.org/problem?id=3260 Description Farmer John has gone to town to buy some farm supplies. ...
- POJ 3260 The Fewest Coins(背包问题)
[题目链接] http://poj.org/problem?id=3260 [题目大意] 给出你拥有的货币种类和每种的数量,商店拥有的货币数量是无限的, 问你买一个价值为m的物品,最少的货币流通数量为 ...
- POJ 3260 The Fewest Coins(多重背包问题, 找零问题, 二次DP)
Q: 既是多重背包, 还是找零问题, 怎么处理? A: 题意理解有误, 店主支付的硬币没有限制, 不占额度, 所以此题不比 1252 难多少 Description Farmer John has g ...
- poj 3260 The Fewest Coins
// 转载自http://blog.163.com/benz_/blog/static/18684203020115721917109/算法不难看出,就是一个无限背包+多重背包.问题在于背包的范围.设 ...
- POJ 3260 The Fewest Coins 最少硬币个数(完全背包+多重背包,混合型)
题意:FJ身上有各种硬币,但是要买m元的东西,想用最少的硬币个数去买,且找回的硬币数量也是最少(老板会按照最少的量自动找钱),即掏出的硬币和收到的硬币个数最少. 思路:老板会自动找钱,且按最少的找,硬 ...
随机推荐
- Asp.net core使用MediatR进程内发布/订阅
1.背景 最近,一个工作了一个月的同事离职了,所做的东西怼了过来.一看代码,惨不忍睹,一个方法六七百行,啥也不说了吧,实在没法儿说.介绍下业务场景吧,一个公共操作A,业务中各个地方都会做A操作,正常人 ...
- CentOS LAMP一键安装网站环境及添加域名
一般的VPS用户普遍使用一键安装包和WEB管理面板居多,在一键安装包中,使用LAMP和LNMP的普遍居多. 第一个版本的LAMP环境包安装过程以及建站过程分享出来. 第一.LAMP一键包环境的安装 目 ...
- [Javascript] Use JavaScript's for-in Loop on Objects with Prototypes
Loops can behave differently when objects have chained prototype objects. Let's see the difference w ...
- JSONObjectWithData方法里options參数选择解释
NSJSONReadingMutableContainers Specifies that arrays and dictionaries are created as mutable object ...
- Page 实例的生命周期
注册页面 · 小程序 https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html
- Eclipse添加Qt插件
此文件仅为步骤操作作一个记录,以便以后方便查阅. 1.操作大体参考这个网站:http://blog.csdn.net/defonds/article/details/5013412 2.我的运行环境: ...
- SprigMVC基础测试
创建POJO package org.entity; public class User { private int id; private String userName; private Stri ...
- HDU3642 Get The Treasury —— 求矩形交体积 线段树 + 扫描线 + 离散化
题目链接:https://vjudge.net/problem/HDU-3642 Jack knows that there is a great underground treasury in a ...
- 比特币客户端Electrum使用介绍
简介 比特币的客户端很多,为什么选择Electrum. 首先Electrum真的很轻量,安装马上可以用,不用下载几百G的区块链账本.我之前安装bitcoin核心客户端,这是个完整节点.下载账本都要好多 ...
- HDU - 4513 吉哥系列故事――完美队形II(manacher)
1.找出一个最长的回文子串,要求中间的值最大,然后向两侧递减. 2.判断条件改为:Ma[i+Mp[i]]==Ma[i-Mp[i]]&&Ma[i-Mp[i]]<=Ma[i-Mp[i ...