map 的使用
题目意思:少林的和尚有两个属性,一个是id号,一个是战斗力。
一开始少林只有方丈,方丈 id = 1, 战斗力 = 10^9.
后来又很多和尚加入了少林,每个和尚都有一个唯一的id号,和一定的战斗力(战斗力可以相等)。
和尚是一个一个地加入少林的。加入的时候,必须已经加入少林的和尚中挑选一名和尚进行比武。
被挑选的和尚,条件是其 战斗力 和 新加入少林的和尚 的战斗力差值最小。
题目给出一个和尚的加入序列(id号,战斗力), 要求输出每次比武的老和尚 的 战斗力。
本题要点:
1、map 存数据
map<int, int> mp; //first战斗等级,second id
2、map 迭代器 it :
每次先把新和尚的信息加入 map 中,再在map中 find 战斗力 :map<int, int>::iterator it = mp.find(fight);
map 迭代器 it 只能 ++ 或者 --。
先 --, 看看前一个战斗力差值多少, 再 ++, 看看后面的战斗力多少。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <cstdlib>
#include <map>
using namespace std;
map<int, int> mp; //first战斗等级,second  id
int n;int main()
{int id, fight;int m, ans;while(scanf("%d", &n) != EOF && n) {m = 0x3f3f3f3f;mp.clear();mp[1e9] = 1;for(int i = 0; i < n; ++i){scanf("%d%d", &id, &fight); mp[fight] = id;map<int, int>::iterator it = mp.find(fight);if(it != mp.begin()){--it;m = it->first;    ans = it->second;++it;}++it;if(it !=  mp.end()){if(abs(m - fight) > abs(fight - it->first))  {m = it->first;ans = it->second;}}printf("%d %d\n", id, ans);}}return 0;
}/*
3
2 1
3 3
4 2
0
*//*
2 1
3 2
4 2
*/

HOJ 4585 Shaolin(map, 迭代器)相关推荐

  1. Shaolin HDU - 4585(map模板题)

    题意: 少林寺有n+1个和尚,他们都有一个独有的编号和战斗力值,当一个年轻人通过所有考试并被宣布为少林的新僧人时,将会有一场战斗,作为欢迎的一部分.新和尚必须与一位战斗等级最接近他的战斗等级的老和尚战 ...

  2. Coins and Queries(map迭代器+贪心)

    题意 n个硬币,q次询问.第二行给你n个硬币的面值(保证都是2的次幂!).每次询问组成b块钱,最少需要多少个硬币? Example Input 5 42 4 8 2 4851410 Output 1- ...

  3. hdu 4585 Shaolin set

    lower_bound 返回第一个不小于  key值的 迭代器. #include<iostream> #include<set> #include<map> #i ...

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

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

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

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

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

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

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

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

  8. C++中map的用法

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

  9. C++中map的使用

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

  10. JS数组的迭代器方法

    迭代器forEachevery 一.迭代器方法 迭代器方法, 这些方法对数组中的每一个元素应用一个函数,可以返回一个值,一组值或一个新数组. 不生成新数组的迭代器方法 1.forEach() forE ...

最新文章

  1. 【使用CMake组织C++工程】2:CMake 常用命令和变量
  2. 2019-1-92.4G射频芯片培训资料
  3. android 圆形头像,自定义圆形ImageView
  4. Android延伸布局到状态栏,Android 状态栏透明
  5. C#开发笔记之15-如何用C#获取某月最大天数?
  6. [C指针] 用图表解读C声明:Unscrambling C Declarations by Diagram
  7. 【老军医方】在脱发过程中遇到的各种疑难杂症
  8. win10桌面的计算机图标怎么删除,win10系统桌面图标小箭头去掉的操作步骤
  9. [小物分享] “Cap-less”——烂笔头3088
  10. 如何使用OpenSSL工具生成根证书与应用证书
  11. 视频教程-jQuery交互式前端开发(第一季):初体验/选择器/事件绑定-jQuery
  12. Charles抓包工具使用介绍
  13. U盘安装Linux系统教程
  14. Javascript动态创建SVG圆弧
  15. 鸿蒙宴中座次理解错的是,鸿门宴的座位安排用意是什么
  16. java实现端口映射_Java BIO实现TCP端口转发(端口映射)功能源码
  17. 人声抑制 深度学习_一种融合骨振动传感器和麦克风信号的深度学习语音提取和降噪方法与流程...
  18. 飞飞php影视系统源码怎么改,飞飞cms影视系统安装说明 飞飞影视系统建站流程...
  19. JVE非我烟弹降价40%,电子烟价格革命真的来了
  20. 旺旺SDK2.8插件 TC

热门文章

  1. 一个网站的建设步骤(写给新手)
  2. uni-app 文件下载
  3. HttpClient的使用与连接资源释放
  4. html中五号字体是多少像素,字体号数与像素对应关系
  5. Linux 创建oracle数据库
  6. 奉劝各位学弟学妹们,该打造你的技术影响力了!
  7. 实体消歧、实体统一和指代消歧
  8. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!商业论证/效益管理计划/项目运行环境/组织过程资产/环境事业因素/组织系统,系列笔记建议收藏!
  9. C#设置点击打开外部exe程序,并判断是否程序已开启,未开启的话打开,已经在运行了就前置
  10. UOJ132 【NOI2015】小园丁与老司机