离散化模板

大家如果不幸看到了这篇博客,一定会在心里默默的说,离散化还需要写一篇博客???
没错,和大家想的不一样,本篇博客没有什么高深的技能,这是一篇离散化模板,纯的。

如果你正好不懂怎么离散化,那就可以看这篇博客学习一下啦!

没有人不懂离散化的把

首先解决一个问题,什么是离散化。
现在给大家一个序列,25957 6405 15770 26287 26465
我们要求出这个序列的第3大,很明显就可以看出来是25957。
那么,假如我们要知道序列的第3大在第几个怎么办呢,很显然,第3大就在第1位嘛。
那么,大家再来看一个序列,3 1 2 4 5,我们要知道序列第3大在第几位,显然也是第1位。

3 1 2 4 5就是对25957 6405 15770 26287 26465的离散化之后的结果
是不是很简单呀。
可是这样做有什么意义呢?
如果原本序列是1e9的量级的话,而本身又是比较稀疏的序列,我们就可以离散化之后放进数组里标记啦!(什么?你说map<long long,ing>也可以???对对对,你说的都对)。

下面我们就来介绍一下怎么离散化吧。
很显然,离散化就是找他在原序列里是第几个,我们就可以将原序列拷贝一份,然后排序,然后在排序后的序列内二分查找原序列的值就可以了,由于lower_bound返回的就是下标,所以我们考虑使用lower_bound来二分查找。

离散化之前一定要先去重,不然的话,lower_bound返回的就不对了。

sort(ans.begin(),ans.end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值