题目链接:https://www.acwing.com/problem/content/138/

参考链接:https://blog.csdn.net/sdz20172133/article/details/80101838

能进行算术运算的迭代器只有随即访问迭代器,要求容器元素存储在连续内存空间里,vector,string,deque的迭代器是有加减法的,但是map,set,multimap,multiset的迭代器是没有加减法的,list也不可以 。但是这些stl容器可以进行++和--的操作。

stl都是左闭右开的,就是说begin()是容器里面的第一个位置,end()是最后一个元素位置加一。

对于low_bound()和upper_bound()来说,前提:一个非降序列!!!!!!

题解:(平衡树解法)

把A1,A2,......An依次插入一个集合,则插入Ai之前,集合中保存的就是满足1<=j<i的所有Aj,而且是有序的。当Ai插入时,可能插入当前set的第一个位置,最后一个位置,或者中间某一个位置。其实就是对插入排序的优化。所以要求得最小差值,只需要比较Ai的前驱和后续位置的值。

#include<iostream>
#include<queue>
#include<set>using namespace std;
struct node{int num;int id;bool operator <(node a) const{return num<a.num;}
};
set<node> s;
int main(){int n;cin>>n;for (int i = 1; i <= n; ++i) {int tmp;cin>>tmp;if (i==1) {s.insert(node{tmp,i});continue;}set<node>::iterator right= s.lower_bound(node{tmp,i});set<node>::iterator left=right;left--;if (right==s.end()) {cout<<tmp-left->num<<" "<<left->id<<endl;}else if (right==s.begin()) {cout<<right->num-tmp<<" "<<right->id<<endl;}else if((tmp-left->num)<=(right->num-tmp)){cout<<tmp-left->num<<" "<<left->id<<endl;}else{cout<<right->num-tmp<<" "<<right->id<<endl;}s.insert(node{tmp,i});}return 0;
}

  

转载于:https://www.cnblogs.com/clarencezzh/p/10668376.html

0x13链表与邻接表之邻值查找相关推荐

  1. 0x13.基础数据结构 — 链表与邻接表

    目录 一.链表 两种双向链表模板 1. 指针 2. 数组 二.例题AcWing 136. 邻值查找 1.平衡树 2.链表 3.线段树 三.邻接表 声明: 本系列博客是<算法竞赛进阶指南>+ ...

  2. 数据结构(一)——链表与邻接表、栈与队列、KMP

    前言 重学算法第3天,希望能坚持打卡不间断,从基础课开始直到学完提高课. 预计时长三个月内,明天再来!肝就完了 2月15日,day03 打卡 今日已学完y总的 算法基础课-2.1-第二章 数据结构(一 ...

  3. 邻值查找—算法进阶指南

    邻值查找 给定一个长度为 n 的序列 A,A 中的数各不相同.对于 A 中的每一个数 Ai,求: min1≤j<i|Ai−Aj| 以及令上式取到最小值的 j(记为 Pi).若最小值点不唯一,则选 ...

  4. 数据结构总结1(火车进栈/兔子与兔子/括号画家/Editor/邻值查找/最大子序和/前缀统计/Phone List/The XOR Largest Pair)

    问题 A: 火车进栈 题目描述 这里有n列火车将要进站再出站-- 但是,每列火车只有1节-那就是车头-- 描述 有n列火车按1到n的顺序从东方左转进站,这个车站是南北方向的,它虽然无限长,只可惜是一个 ...

  5. 第4关:顺序表的按照值查找序号操作

    任务描述 本关任务:编写顺序表按照值查找序号操作的函数. 相关知识 在顺序表L找第一个值为e的元素,找到后返回其逻辑序号,否则返回0. 注意:由于线性表的逻辑序号从1开始,这里用0表示没有找到值为e的 ...

  6. 136. 邻值查找【set lower_bound】

    set的lower_bound没找到返回的迭代器就是 st.end() #include<bits/stdc++.h> using namespace std; const int N=1 ...

  7. c语言邻接表做公园导游系统,公园导游管理系统

    <公园导游管理系统>由会员分享,可在线阅读,更多相关<公园导游管理系统(32页珍藏版)>请在人人文库网上搜索. 1.计算机信息工程学院数据结构课程设计报告题 目公园导游系统专 ...

  8. 数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)

    摘自:数据结构--无向图创建邻接表以及深度遍历.广度遍历(C语言版) 作者:正弦定理 发布时间:2020-12-22 20:55:12 网址:https://blog.csdn.net/chinese ...

  9. 构建复杂网络的几种方法(邻接矩阵,邻接表,十字链表,邻接多重表)

    目录 1. 数据结构 线性结构 非线性结构 2. 复杂网络的数组表示 3. 复杂网络的邻接表表示 4. 邻接矩阵与邻接表的比较 5. 复杂网络的其他表示方法 逆邻接表 十字链表 邻接多重表 前向星 链 ...

最新文章

  1. LVI:激光雷达子系统的特征提取梳理
  2. 青源 LIVE 预告 | 北大王一飞:高效 GAN 采样算法 (ECML 最佳论文解读)
  3. java add offer_图解Java中的5大队列!(干货收藏)
  4. 从RocketMQ看长轮询(Long Polling)
  5. 大侠稍等!URL 中为何出现奇怪的字符
  6. https抓包_从Wireshark抓包看HTTPS的加密功能
  7. 【python】时间处理函数以及文件操作
  8. (转) 用虚函数实现多态
  9. 算法不会,尚能饭否之对分查找二叉树(又为快速排序之二叉树实现)
  10. 骗过70%的人!这个AI能自动给视频配音,真假难辨(不服来试)
  11. HTTP协议到底是怎么回事
  12. 1、redis之安装与配置
  13. 解决apicloud中真机同步海马玩模拟器中每次都要升级apploader的问题
  14. 关于Nginx跨域配置的一些问题,详解如何正确的配置跨域
  15. Python-计量经济学案例
  16. visio 怎么画直线
  17. ps4正在连接ea服务器,ps4极品飞车19连不上ea服务器 | 手游网游页游攻略大全
  18. 架构师如何练习演讲和表达能力
  19. ZGF建筑事务所公布波特兰国际机场新航站楼设计方案,木构屋顶展现自然景观
  20. 一份游戏策划书的范例[转载]

热门文章

  1. Docker Swarm bind 数据持久化
  2. 牛客ACM赛 B [小a的旅行计划 ]
  3. LocalDB连接失败
  4. 使用Ajax的Time实现倒计时功能
  5. HK2000 V2版本 GPRS通讯串口说明
  6. [好消息]博客园期刊第二期发布
  7. s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(一 硬件驱动层)
  8. python中遍历结构可以是哪些数据类型_全!Python基础之原生数据类型、判断和循环、函数和文件操作合集...
  9. wxpython使用matplot_测试怎么将MatPlotLib嵌入到wxPython中
  10. DVWA Brute Force(low)