当前位置: 首页 > news >正文

Wavelet tree

具体学习可参考:

原文

知乎翻译版本

速通:

假设初始的数组是 \(T\)

init

初始化。

我们假设值域的最高 bit 位是 \(up\)。考虑从 \(up\) 开始往低位扫,每次我们把当前的 \(T\) 按照这一位的值做稳定排序并创建新版本,在过程中,我们给每一个 \(T\) 创建它的数组 \(B\) 表示接下来需要排序的关键字位的值(0/1-bit)。显然的,这个 \(B\) 也和 \(T\) 对应拥有多个版本。

access

\(T_i\)。因为我们只会存储 \(B\) 数组。

考虑求出来 \(T_i\) 的每一个 bit 位的值,最开始版本的 \(B\) 显然就是最高位的 0/1bit,并且位置还没开始排,直接用,然后考虑锁定这个 \(T_i\) 在下一个版本被排到第几个位置。如果这一位是 \(1\),那么下一个版本 \(0\) 和原本位置就在它前面的 \(1\) 会在它前面,算一下个数。如果是 \(0\) 的话就是前面的 \(0\) 在它前面。这样跳完所有版本即可。

用这个方法我们可以求解任意版本 \(T\) 的这个东西。

rank

\(T_{1,2,3,...i}\)\(c\) 的出现次数。我们考虑对于最终版本记录每个数的起始位置,那么现在我们就要求结束位置,因为最终版本显然相同数都在一段内。

我们考虑这样做,我们从初始版本扫,或者说从最高位开始扫,每次我们把 \(c\) 的当前位做一个限制(满足这一位等于 \(c\) 的这一位),维护当下版本满足当下限制的末尾位置,那么扫完了就是满足所有限制即 \(=c\) 的末尾位置了。记这个末尾位置是 \(t\),维护 \(t\),最开始 \(t=i\)(没有任何限制,显然末尾就是 \(i\))。

怎么做加入限制?比如加入的是最高位为 \(0\),那么就是查初始版本的 \(B\) 的前 \(t\)\(0\) 有多少个,有 \(c\) 个那么新的末尾就是 \(c\)。然后 \(1\) 的话同理,就是整个 \(B\)\(0\) 加上前 \(t\)\(1\)

最后得到一个 \(t\),算一下就有次数了。

用这个方法我们可以求解任意版本 \(T\) 的这个东西。

select

求第 \(i\)\(c\)。是 rank 的逆运算,类似,不多叙述。

用这个方法我们可以求解任意版本 \(T\) 的这个东西。

quantile

求区间第 \(k\) 小。

好的,终于到比较 hard 的问题了。既然我们有 wavelet tree 按照 bit 划分的结构,那么我们可以考虑利用这个结构。我们还是从初始版本和最高位开始扫,我们尝试用递归的一个结构,假设当前要求当前版本的 \([l,r]\)\(min:k-th\),我们考虑这个区间里面 \(B=0,1\) 的,\(B=0\)\(B=1\) 的在排序后显然分别都对应一个区间,并且 \(B=0\) 的区间里的数显然均小于 \(B=1\) 的,那么我们就类似 01trie 一样决策一下走到哪里即可,递归下去即可。

ranking

显然等价于 quantile,做法也类似,不讲了 qwq。

http://www.jsqmd.com/news/44036/

相关文章:

  • 买完学习机还需要去线下补课吗? AI 学习机 + 自习室是中小学生普娃的更优解!
  • 251118
  • 拥护UE4.27、UE5.0、UE5.1、UE5.2、UE5.3、UE5.4、UE5.5的VS2022一键安装技巧
  • Dify VS LangGraph
  • 动态重心
  • nerdbox 进程树
  • GAN生成对抗网络学习-例子:生成逼真手写数字图 - 实践
  • LangChain v1.0 大模型的调用
  • 从工匠故事读懂开源软件的特点与价值 - 实践
  • linuxserver/librespeed镜像在host网络模式下自定义web监听端口
  • 详细介绍:pdf解析工具---Miner-u 本地部署记录
  • Maven 无用依赖清理与依赖冲突解决
  • 强化学习从入门到放弃 —— 跟着 OpenAI 学强化学习
  • 使用Action表驱动代替switch…case语句
  • LangChain v1.0 Agent的工具定义及调用
  • linux c qt
  • linux c mysql库
  • L11 RuoYi_数据分页的总条数分析
  • 2025最新江苏苏州、高邮、镇江方向(专线)物流、当日往返运输、配送中心、分拨中心服务商推荐:时效性高,线路可定制,提供仓储、供应链等物流全链条服务
  • c#json帮助类
  • 11.17 事务的隔离级别
  • 获取当前软件的内存
  • foobar2000 v2.25.3 汉化版
  • 详细介绍:深度学习 计算机视觉 Kaggle(上):从理论殿堂起步 ——像素、特征与模型的进化之路
  • 默认SVN忽略bin和obj文件夹,即使是Add也不默认勾选
  • DDOS 科普与防御
  • 思维trick总结
  • Web of Things (WoT) 物描述 2.0 首个公开工作草案发布
  • IGMP 因特网组管理协议
  • msys中安装git for window