【题目大意】

Byteotian Bit Bank (BBB) 拥有一套先进的货币系统,这个系统一共有n种面值的硬币,面值分别为b1, b2,..., bn. 但是每种硬币有数量限制,现在我们想要凑出面值k求最少要用多少个硬币。

【思路】

裸的多重背包能过,不过好像有个神奇的优化?

把c[i]拆分成(1、2、4、……、2^x、余下数)的形式,由于每一次在前一次的基础上进行,可以拼凑初1..c[i]中的任意数。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=+;
const int INF=*+;
int n,val,b[MAXN],c[MAXN];
int f[MAXN];//凑出纸值x的面值数量 int main()
{
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&b[i]);
for (int i=;i<=n;i++) scanf("%d",&c[i]);
scanf("%d",&val);
f[]=;
for (int i=;i<=val;i++) f[i]=INF;
for (int i=;i<=n;i++)
for (int k=;c[i];k<<=)
{
k=min(k,c[i]);
c[i]-=k;
for (int j=val;j>=k*b[i];j--)
f[j]=min(f[j],f[j-k*b[i]]+k);
}
printf("%d",f[val]);
return ;
}

最新文章

  1. Java 二叉树遍历右视图-LeetCode199
  2. 算法数据结构(一)-B树
  3. 清华学堂 LightHouse
  4. 使用react做的聊天对话列表
  5. Ansible学习笔记
  6. mysql gb2312与lanti1
  7. transitionend 事件的兼容
  8. 3月3日(5) Roman to Integer
  9. bootstrap IE兼容
  10. C#应用程序隐藏调用bat脚本
  11. Oracle 数据备份与恢复
  12. lvs负载均衡概述
  13. ethereum/EIPs-160 EXP cost increase
  14. Delphi处理Http请求自定义Header
  15. 微信小程序中使用Async-await方法异步请求变为同步请求
  16. python开源数据库gadfly安装排除错误
  17. dapper 简单多表查询
  18. 转: jquery.qrcode.js生成二维码插件&amp;转成图片格式
  19. SCRUM站立会议模拟
  20. Java并发编程之重入锁

热门文章

  1. ASP.NET EF(LINQ/Lambda查询)
  2. Anaconda3的安装和汉化
  3. 64_n1
  4. str.format() 格式化字符串函数
  5. JavaScript基础练习(一)
  6. git rebase 过程中遇到冲突该怎么解决?
  7. 写在Web考试后的一点小总结
  8. 仿微信小红圈消息提示App消息红圆点提示
  9. Python2中input()、raw_input()和Python3中input()
  10. Asp.net MVC CSS/Javascript Bundle 配置文件