首页 > 编程语言 >基础算法模板之区间离散化与合并

基础算法模板之区间离散化与合并

时间:2023-03-17 20:22:22浏览次数:39  
标签:下标 int ed st 离散 算法 alls 区间 模板

区间离散化

将数量很少但数值很大的区间下标有序映射到一个集中的区间内,并可以根据原下标x迅速找到(二分)新下标

vector<int> alls; // 存储所有可能下标
sort(alls.begin(),alls.end()); // 排序
alls.erase(unique(alls.begin(),alls,end()),alls.end()); // 有序序列去重
// 根据x找到被映射后的下标
int find(int x)
{
	int l = 0,r = alls.size() - 1;
	while(l < r) // 二分搜索
	{
		int mid = l + r >> 1;
		if(alls[mid] >= x) r = mid;
		else l = mid + 1;
	}
	return l + 1; // 保证映射后的下标是从1开始
}

区间合并

区间合并是将多段区间中有交集的区间合并成一段区间

void merge(vector<pair<int,int>> &segs)
{
	vector<pair<int,int>> res;
	int st = -2e9,ed = -2e9;
	for(auto seg : segs)
	{
		if(ed < seg.first)
		{
			if(st != -2e9) res.push_back({st,ed});
			st = seg.first;
			ed = seg.second;
		}
		else
		{
			ed = max(ed,seg.second);
		}
	}
	if(st != -2e9) res.push_back({st,ed});
	segs = res;
}

标签:下标,int,ed,st,离散,算法,alls,区间,模板
From: https://www.cnblogs.com/zhiao/p/17228037.html

相关文章

  • 基础算法模板之前缀和与差分
    前缀和规定数列{\(a_i\)}的前缀和为\(S_i\)=\(\sum{_{k=1}^i}a_k\),常用于使用o(1)的时间计算某段区间求和//一维前缀和S[i]=S[i-1]+a[i];//前缀和初始化,i......
  • m基于改进遗传算法优化的双bp神经网络时间序列预测matlab仿真
    1.算法描述       遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假......
  • .net6 使用iTextSharp操作PDF模板
       一、首先要通过Adobe制作好PDF模板,目前发现只能通过这个工具才能制作PDF模板Adobe自己去官网下载,不过官网是要订阅的。或者自己去找破解版也行;下载后废话不多......
  • 【分布式技术专题】「分布式技术架构」一文带你厘清分布式事务协议及分布式一致性协议
    概念简介Paxos是一种基于消息传递具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。发展历史Paxos算法的发展历史追溯到古希腊,当时有......
  • python 排序算法
    冒泡排序算法比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。......
  • 立体匹配算法
    立体匹配算法简介在立体匹配中,匹配问题可以看成是寻找两组数据相关程度的过程。立体匹配算法由多种分类根据算法运行时约束的作用范围:分为局部(local)匹配算法和全局(Glob......
  • 设计模式5——模板方法模式
    1、定义模板方法模式由两部分结构组成,第一部分是抽象父类,第二部分是具体的实现子类。2、核心在抽象父类中封装子类的算法框架,它的init方法可作为一个算法的模板,指导子......
  • 排序算法01随笔
    日月蹉跎现在是2023年03月17日八点五六分,心中想起一句话:“日月蹉跎人已将老功业未成”每个人心中都有个美好的梦,我们如何去实现它,是否能够坚持下去?又需要付出多少?望......
  • 算法刷题-记票统计-JAVA
    0x00引言为获取一个良好的算法思维,以及不再成为一个脚本小子,争取每天一道算法题,培养自己的逻辑思维,温顾各类型语言语法知识。题解只写自己理解的解法,其他解法不再增加。......
  • 代码随想录算法训练营Day44 动态规划
    代码随想录算法训练营代码随想录算法训练营Day44动态规划|完全背包518.零钱兑换II377.组合总和Ⅳ完全背包有N件物品和一个最多能背重量为W的背包。第i件物品的重......