Coins and Queries(map迭代器+贪心)
题意
n个硬币,q次询问。第二行给你n个硬币的面值(保证都是2的次幂!)。每次询问组成b块钱,最少需要多少个硬币?
5 42 4 8 2 4851410
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迭代器+贪心)相关推荐
- Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心
题目链接 题目大意:给你n个物品,第iii个物品价值aia_iai,询问q次,问你能不能凑出价值为qiq_iqi的物品. 小贪心吧.从大到小找,能拿就拿就行了. #include<bits/ ...
- C++(STL):29 ---关联式容器map 迭代器
无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器.当然,map 容器也不例外. C++ STL 标准库为 map 容器配备的是双向迭代器(bidirecti ...
- LeetCode 1057. 校园自行车分配(map有序+贪心)
文章目录 1. 题目 2. 解题 1. 题目 在由 2D 网格表示的校园里有 n 位工人(worker)和 m 辆自行车(bike),n <= m.所有工人和自行车的位置都用网格上的 2D 坐标 ...
- [C++] map 迭代器 查找
迭代器 正向迭代器和反向迭代器 正向迭代器遍历 map map<string, int> mm; map<string, int>::iterator iter; for(it ...
- map迭代器遍历_一口气写了 HashMap 的 7种遍历方式,被同事夸了
随着 JDK 1.8 Streams API 的发布,使得 HashMap 拥有了更多的遍历的方式,但应该选择那种遍历方式?反而成了一个问题. 本文先从 HashMap 的遍历方法讲起,然后再从性能. ...
- C++map迭代器最全最容易理解
一.对于迭代器得理解 迭代器就是类似于c语言的指针(大概就是这样理解的). 二.迭代器的基本形式 map<string,int>::iterator iter;(iter就是类似于指针的应 ...
- 【codeforces Round#801 Div2 D题 Tree Queries】树形贪心结论
题目链接 题意: 给你一棵树,你需要执行多次询问来确定一个节点x的位置,对于每一次询问,你需要选择一个节点,能得到这个节点与x节点的距离是多少,问至少需要多少次询问才能确定x的位置. 分析: 有一个结 ...
- C++中map的用法
map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两 ...
- C++中map的使用
map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两 ...
最新文章
- Rectangular inference 矩形推理
- ubuntu 安装yum_如何在 Linux 中安装微软的 .NET Core SDK | Linux 中国
- aspx页面引用html页面
- 数据结构:循环链表解决约瑟夫问题
- jstack命令:教你如何排查多线程问题
- 新年开篇,一起成长,送书 7 本!TF + PyTorch方向
- 【Linux】Ubuntu 代理配置
- promiseKit 解析 iOS
- Visual Studio 11更名为“Visual Studio 2012”,RC版(与.NET 4.5一起)开放下载
- TypeError: descriptor '__init__' requires a 'super' object but received a 'str'
- pkpm字体库下载_pkpm字体库转到cad
- lammps教程:ovito多晶显示方法
- mirbase数据库简介
- Excel如何根据身份证号码提取出性别
- html超链接本地链接,为何本地连接变成本地连接2连接
- Opencv C++ 学习视频整理源代码(1)
- 计算机Excel的公式计算,Excel如何自动计算天数公式?
- # Linux学习笔记
- 基于matlab的神经网络设计,神经网络模型matlab例子
- 用matlab跳动的心,[ 教程 ] 用Arduino制作一个跳动的心
热门文章
- 使用脚本实现自动清除指定文件夹下丢失链接文件的符号链接
- JZ2440学习总结1
- 【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)
- 比较字符串a和b的大小
- 【是泰波那契,不是斐波那契】1137. 第 N 个泰波那契数
- docker容器指定ip
- IDEA启动项目:找不到或无法加载主类
- C++ 二维数组和指针数组
- Fully Convolutional Networks for Semantic Segmentation (FCN)论文翻译和理解
- oracle多线程类连接数,数据库连接数,服务器进程,线程之间什么关系?