Description

农夫John想到镇上买些补给。为了高效地完成任务,他想使硬币的转手次数最少。即使他交付的硬币数与找零得到的的硬币数最少。 John想要买T(1<=T<=10000)样东西。有N(1<=n<=100)种货币参与流通,面值分别为V1,V2..Vn (1<=Vi<=120)。John有Ci个面值为Vi的硬币(0<=Ci<=10000)。我们假设店主有无限多的硬币,并总按最优方案找零。

Input

* Line 1: 两个整数 N 与 T 。

* Line 2: N 个数,表示 V1, V2, ..Vn。

* Line 3: N 个数,表示 C1, C2, ..Cn。

Output

* Line 1: 一个整数,表示最优方案的转手次数,如无解输出-1。

Sample Input

3 70
5 25 50
5 2 1

Sample Output

3

思路: 问题为多重背包和完全背包的一个结合。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define R register int
 4 #define rep(i,a,b) for(R i=a;i<=b;i++)
 5 #define Rep(i,a,b) for(R i=a;i>=b;i--)
 6 #define ms(i,a)    memset(a,i,sizeof(a))
 7 #define gc()       getchar()
 8 template<class T>void read(T &x){
 9   x=0; char c=0;
10   while (!isdigit(c)) c=gc();
11   while (isdigit(c)) x=x*10+(c^48),c=gc();
12 }
13 int const  N=10000+3;
14 int const  M=100+3;
15 int const  inf=1e8;
16 int v[M],c[M],n,m,f[N<<1],g[N<<1];
17 int main(){
18   read(n);read(m);
19   rep(i,1,20000) f[i]=g[i]=inf;
20   rep(i,1,n) read(v[i]);
21   rep(i,1,n) read(c[i]);
22   rep(i,1,n) Rep(j,20000,v[i])  rep(k,1,c[i]) {
23     if(k*v[i]>j) break;
24     f[j]=min(f[j],f[j-k*v[i]]+k);
25   }
26   rep(i,1,n) rep(j,v[i],20000) g[j]=min(g[j],g[j-v[i]]+1);
27   int ans=inf;
28   rep(i,m,20000) if(f[i]!=inf && g[i-m]!=inf) ans=min(ans,f[i]+g[i-m]);
29   if(ans==inf) ans=-1;
30   cout<<ans<<endl;
31   return 0;
32 }

View Code

转载于:https://www.cnblogs.com/ZJXXCN/p/10233625.html

bzoj 1716 找零钱相关推荐

  1. python【蓝桥杯vip练习题库】ALGO-232找零钱(贪心 模拟)

    试题 算法训练 找零钱 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 有n个人正在饭堂排队买海北鸡饭.每份海北鸡饭要25元.奇怪的是,每个人手里只有一张钞票(每张钞票的面值为25. ...

  2. PAT 1037 在霍格沃茨找零钱(20)(代码+思路)

    1037 在霍格沃茨找零钱(20)(20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon) ...

  3. 1028: 在霍格沃茨找零钱

    1028: 在霍格沃茨找零钱 时间限制: 1 Sec  内存限制: 128 MB 提交: 316  解决: 147 [提交][状态][讨论版] 题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己 ...

  4. 【广义找零钱问题】 贪心算法求解进制转换问题

    原题如下,怪我没读懂题意就开始写代码,曲解了题意,就写出个这样的奇葩进制来.但是运行结果与我的预期(实际上是对题的的错误理解)相符. 功能(与上图无关) 实现自定义独特进制的输出.类似于找零钱问题,见 ...

  5. python找零钱代码_Python实现的一个找零钱的小程序代码分享

    Python写的一个按面值找零钱的程序,按照我们正常的思维逻辑从大面值到小面值的找零方法,人民币面值有100元,50元,20元,10元,5元,1元,5角,1角,而程序也相应的设置了这些面值.只需要调用 ...

  6. $动态规划系列(2)——找零钱问题

    refer:http://interactivepython.org/courselib/static/pythonds/index.html 1. 问题描述 Tom在自动售货机上买了一瓶饮料,售价3 ...

  7. 动态规划应用--找零钱

    文章目录 1. 问题描述 2. 问题分析 2.1 回溯法求解 2.2 DP状态转移方程法 2.3 DP状态转移表法 1. 问题描述 找零问题,在贪心算法讲过.但是贪心不一定能得出最优解.假设有几种不同 ...

  8. C++学习之路 | PTA乙级—— 1037 在霍格沃茨找零钱 (20 分)(精简)

    1037 在霍格沃茨找零钱 (20 分) 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十 ...

  9. 【README3】动态规划之“找零钱”说明最优子结构怎么解决

    接上文:[README2]动态规划之斐波那契数列说明重叠子问题如何解决 文章目录 找零钱问题说明最优子结构 (1)何为最优子结构 (2)状态转移方程 暴力解法 (3)备忘录解决重叠子问题 (4)迭代解 ...

最新文章

  1. 零基础学习java软件开发攻略
  2. Redis的分布式锁详解
  3. datanode无法启动_Hadoop DataNode启动和初始化过程
  4. cf1556Compressed Bracket Sequence
  5. 比较好的一些 ConcurrentHashMap讲解博客
  6. 终于用上gcc-4.1编译的系统了
  7. 联想笔记本暗屏几乎看不见_2020年内存条推荐-选购指南(DDR3/DDR4/台式/笔记本内存)...
  8. VMware-workstation16 安装VM无权输出许可证密钥,请使用系统管理员账户重试
  9. 输入关键字生成对联_对联生成器在线生成_对联在线自动生成器下载V1.0.0|好特下载...
  10. 由矢量电子海图构建海底 TINDEM方法研究
  11. 中国行政划分代码(身份证号码前六位)
  12. 产品经理的小白面试~
  13. 视频格式那么多,MP4/RMVB/MKV/AVI 等,这些视频格式与编码压缩标准 mpeg4,H.264.H.265 等有什么关系?...
  14. 003-photoshop快速去掉图片背景颜色、签名放到指定文档合成图片
  15. Java OutputStream.write()的功能简介说明
  16. 报错W: APT had planned for dpkg to do more than it reported back (9 vs 16).解决方式
  17. 2018国赛数学建模笔记
  18. 四款常用浏览器比较、简介
  19. 图片转文字工具怎样进行批量识别?
  20. 50个人围成一圈数到3和3的倍数时出圈,问剩下的人是谁?在原来的位置是多少(简单易懂)

热门文章

  1. tomcat启动报错,找不到相应的 queue,从而引发内存泄漏
  2. 结合源代码分析一个完整的中断过程【转】
  3. MFCWinInet学习
  4. centOS下JDK1.8的安装
  5. Windows Restart Manager 重启管理器
  6. float类型转integer_【第3章:Java基础程序设计】_Java数据类型
  7. 网络批量后修改服务器,企业网络批量安装服务器搭建案例
  8. Linux之系统操作命令
  9. 机构借贷平台 Maple 将上线以太坊主网并开启流动性挖矿
  10. Matcha已升级至0xV4版,比Uniswap和Sushi等平台节省4%的交易费