题意

n个硬币,q次询问。第二行给你n个硬币的面值(保证都是2的次幂!)。每次询问组成b块钱,最少需要多少个硬币?

Example
Input
5 42 4 8 2 4851410

Output
1-132

解题思路:总体上使用的是贪心策略,从最大面值的往下贪心选择就可以了,由于数据量较大这里使用了map,这样就最多才32个数。第一次使用map的迭代器

反向迭代器的rbegin和rend的位置
和正向迭代器的begin和end的位置如下图

 
 1 #include<cstdio>
 2 #include<map>
 3 #include<algorithm>
 4 using namespace std;
 5 map<int,int>mp;///这里键存储的是硬币的面值,值存储的是硬币的个数
 6 int main()
 7 {
 8     int n,m,i;
 9     scanf("%d%d",&n,&m);
10     for(i=0; i<n; i++)
11     {
12         int x;
13         scanf("%d",&x);
14         mp[x]++;
15     }
16     while(m--)
17     {
18         int ans=0;
19         int flag=0;
20         int a,t;
21         scanf("%d",&a);
22         map<int,int>::reverse_iterator it;///反向迭代器
23         for(it=mp.rbegin(); it!=mp.rend(); it++)
24         {
25             t=min(a/it->first,it->second);
26             ans+=t;///t只有是整数的时候才会用来计数
27             a=a-t*it->first;
28             if(!a)///当a=0是恰好完全取完
29             {
30                 flag=1;
31                 break;
32             }
33         }
34         if(flag==1)
35         {
36             printf("%d\n",ans);
37         }
38         else
39         {
40             printf("-1\n");
41         }
42     }
43     return 0;
44 }


转载于:https://www.cnblogs.com/wkfvawl/p/9378687.html

Coins and Queries(map迭代器+贪心)相关推荐

  1. Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心

    题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai​,询问q次,问你能不能凑出价值为qiq_iqi​的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...

  2. C++(STL):29 ---关联式容器map 迭代器

    无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器.当然,map 容器也不例外. C++ STL 标准库为 map 容器配备的是双向迭代器(bidirecti ...

  3. LeetCode 1057. 校园自行车分配(map有序+贪心)

    文章目录 1. 题目 2. 解题 1. 题目 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 2D 坐标 ...

  4. [C++] map 迭代器 查找

    迭代器 正向迭代器和反向迭代器 正向迭代器遍历 map map<string, int> mm; map<string, int>::iterator iter; for(it ...

  5. map迭代器遍历_一口气写了 HashMap 的 7种遍历方式,被同事夸了

    随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...

  6. C++map迭代器最全最容易理解

    一.对于迭代器得理解 迭代器就是类似于c语言的指针(大概就是这样理解的). 二.迭代器的基本形式 map<string,int>::iterator iter;(iter就是类似于指针的应 ...

  7. 【codeforces Round#801 Div2 D题 Tree Queries】树形贪心结论

    题目链接 题意: 给你一棵树,你需要执行多次询问来确定一个节点x的位置,对于每一次询问,你需要选择一个节点,能得到这个节点与x节点的距离是多少,问至少需要多少次询问才能确定x的位置. 分析: 有一个结 ...

  8. C++中map的用法

    map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两 ...

  9. C++中map的使用

    map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两 ...

最新文章

  1. Rectangular inference 矩形推理
  2. ubuntu 安装yum_如何在 Linux 中安装微软的 .NET Core SDK | Linux 中国
  3. aspx页面引用html页面
  4. 数据结构:循环链表解决约瑟夫问题
  5. jstack命令:教你如何排查多线程问题
  6. 新年开篇,一起成长,送书 7 本!TF + PyTorch方向
  7. 【Linux】Ubuntu 代理配置
  8. promiseKit 解析 iOS
  9. Visual Studio 11更名为“Visual Studio 2012”,RC版(与.NET 4.5一起)开放下载
  10. TypeError: descriptor '__init__' requires a 'super' object but received a 'str'
  11. pkpm字体库下载_pkpm字体库转到cad
  12. lammps教程:ovito多晶显示方法
  13. mirbase数据库简介
  14. Excel如何根据身份证号码提取出性别
  15. html超链接本地链接,为何本地连接变成本地连接2连接
  16. Opencv C++ 学习视频整理源代码(1)
  17. 计算机Excel的公式计算,Excel如何自动计算天数公式?
  18. # Linux学习笔记
  19. 基于matlab的神经网络设计,神经网络模型matlab例子
  20. 用matlab跳动的心,[ 教程 ] 用Arduino制作一个跳动的心

热门文章

  1. 使用脚本实现自动清除指定文件夹下丢失链接文件的符号链接
  2. JZ2440学习总结1
  3. 【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)
  4. 比较字符串a和b的大小
  5. 【是泰波那契,不是斐波那契】1137. 第 N 个泰波那契数
  6. docker容器指定ip
  7. IDEA启动项目:找不到或无法加载主类
  8. C++ 二维数组和指针数组
  9. Fully Convolutional Networks for Semantic Segmentation (FCN)论文翻译和理解
  10. oracle多线程类连接数,数据库连接数,服务器进程,线程之间什么关系?