关于离散化+小Trick

news/2024/9/29 11:02:51

离散化

干嘛用的不多说。

你不会去问度娘吗

板板

经常忘又懒得找。遂写一模板暂存。

//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-1;
}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放到离散化数组里,这样原本不连续的数离散化后也不连续。

法二:

这种方法常数会小一些。

记录一下离散化数组中每个数是否和前一个数一样,如果离散化用的数组叫做 \(lsh\),令 \(dif_i=[lsh_i=lsh_{i-1}]\) ,求出 \(dif\) 的前缀和 \(blo_i\),那么 \(blo_i\) 相同的数就是在一个连续块里的。

\(f_i=[blo_{a_i}=blo_{a_{i-1}}]\)(也就是这一位是否和前一位在一个连续块里),再用一个树状数组维护 \(f\) 的前缀和,就可以快速查询一个区间内的所有值是否都在同一个连续块里。

内心OS:感觉没人会为了离散化而单独写一个树状数组吧...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/66090.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

浅浅记录学习情况叭

Basic Concepts对于一个给定的网络G=(V,E),其中V为网络的节点集,E为网络的边集. Trace(迹): 将G划分为q个社区,我们用一个qxq的对称矩阵e来表示该划分,e中的每个元素表示连接社区i与社区j的边在G的全部边中所占的比例显然有∑i,jeij=1。矩阵e的迹Tr(e)表示连接社区内部节点的边…

sentinel-transport-SPI-HeartbeatSenderInitFunc

说明 我们引入以下依赖<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>1.8.6</version> </dependency>配置环境变量-Dcsp.sentinel.dashboard.server=loca…

这些年出版的书籍——归档整理

随着出版的书籍越来越多,收到的各种邮件也越来越频繁,遂于百忙之中,抽空整理一下书籍相关的资料和信息。《ASP.NET MVC企业级实战》出版日期:2017年3月目录:https://www.cnblogs.com/jiekzou/p/5625762.html随书源码:因某些原因,原百度云盘下载地址已被封,qq群文件里面…

黑马PM-内容项目-内容产品模型

内容产品概述内容产品设计模型

妙用编辑器:使用Notepad--宏功能提高维护指令生成生成效率

应用场景 日常维护工作中,需要快速生成一批指令来完成某些操作,比如:快速添加一批节点。 目标指令列表如下: ADD NODE: ID=1, NAME="NODE_1"; ADD NODE: ID=2, NAME="NODE_2"; ADD NODE: ID=3, NAME="NODE_3"; ADD NODE: ID=4, NAME="N…

网站源码安装后访问首页,页面错乱的处理方法

检查资源文件:确保 CSS、字体、图片和 JavaScript 文件都存在于正确的路径中,并且链接路径正确。 清除缓存:清除浏览器缓存,重新加载页面。 检查编码声明:确保 HTML 文件中有正确的编码声明。 检查模板文件:确保模板文件没有语法错误或其他问题。通过以上步骤,你应该能够…

PBOOTCMS中新增并开启手机端模板,以便为用户提供更好的移动设备浏览体验

在PBOOTCMS中新增并开启手机端模板,以便为用户提供更好的移动设备浏览体验,您可以按照以下步骤操作: 开启手机版开关登录后台:首先,您需要以管理员身份登录PBOOTCMS的后台管理系统。 进入全局配置:在后台菜单中找到“全局配置”或类似命名的选项并点击进入。 找到移动设备…

pbootcms提示:“未检测到您服务器环境的sqlite3数据库扩展…”

当PBootCMS提示“未检测到您服务器环境的sqlite3数据库扩展”时,可以通过以下两种方法来解决: 方法一:修改数据库配置连接驱动为 pdo_sqlite打开数据库配置文件:打开数据库配置文件 /config/database.php。修改数据库类型:找到 type 这一行,将 sqlite 改为 pdo_sqlite。方…