关于离散化+小Trick
离散化
干嘛用的不多说。
你不会去问度娘吗
板板
经常忘又懒得找。遂写一模板暂存。
//a为原数组,b为a的副本
void version1(){
sort(b+1,b+1+n);
int siz=unique(b+1,b+1+n)-b-1;
for(int i=1,k;i<=n;i++)
a[i]=lower_bound(b+1,b+1+siz,a[i])-b;
}
unordered_map<int,int> mp;
void version2(){
int cnt=0;
for(int i=1;i<=n;i++){
if(mp.find(a[i])==mp.end())
mp[a[i]]=++cnt;
a[i]=mp[a[i]];
}
}
Trick
直接离散化会导致本不连续的值连续,有两种解决方法。
法一:
离散化的时候把每个值+1放到离散化数组里,这样原本不连续的数离散化后也不连续。
法二:
这种方法常数会小一些。
记录一下离散化数组中每个数是否和前一个数一样,如果离散化用的数组叫做
令
内心OS:感觉没人会为了离散化而单独写一个树状数组吧...
分类:
OI相关(^▽^*)
标签:
离散化
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)