首页 > 编程语言 >AcWing 算法提高课 可持久化

AcWing 算法提高课 可持久化

时间:2022-09-28 16:22:47浏览次数:47  
标签:持久 trie 线段 一个 算法 版本 节点 AcWing

可持久化的前提:数据结构本身的拓扑结构不变

trie、线段树、树状数组、堆等都可持久化

平衡树(一般)需要左旋和右旋,不可持久化 

 

可持久化希望将数据结构的全部修改记录下来(历史版本)

核心思想:只记录每一个版本与前一个版本不一样的地方

1、可持久化Trie

 

 

 

 

 

可以发现,绿线表示同一个点,但是下方的子树有修改(需要裂开),跨版本的蓝线,可以连到没有修改的子树。

每一个版本,只对比和上一个版本不一样的地方

算法流程

 

 

 开辟一个新的根,然后向下遍历时,如果上一个版本已经存在则复制(连出全部跨版本的蓝线)。

tr[q][si]相当于有变化的位置裂开一个新的节点(绿线对应的右侧位置),或者新开辟一个节点 。

例题:https://www.acwing.com/problem/content/258/

可持久化trie维护数字的前缀异或和

 

2、可持久化线段树(主席树)

不能用堆的方式存,要用指针的方式存

 

 

 

注意:可持久化线段树(一般)难以处理懒标记,故难以进行区间修改操作

可持久化线段树由于不用新添加点,(每一个节点在上一个版本已经存在了),比trie好写?

 

 

 

例题:区间第k小数

求数组下标区间内的第k小数

https://www.acwing.com/problem/content/description/257/

线段树表示数值区间中存在的数的个数。

每个版本表示插入第i个数字后的线段树。

然后在线段树上二分,如果在左边可以查到k个以上的数就去左边,否则去右边。

标签:持久,trie,线段,一个,算法,版本,节点,AcWing
From: https://www.cnblogs.com/ydUESTC/p/16738494.html

相关文章

  • 分布式自增ID算法Snowflake简介
    背景过去的项目开发中,我们常常选用的数据库是mysql,mysql以其体积小、速度快等优势,备受中小型项目的青睐。随着项目数据量的迅速增长,mysql已无法满足我们的项目需求,数据迁移......
  • 贪心算法
    应用实例假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号思路分析目前并没有算法可以快速......
  • Pinia持久化
    Pinia是Vue的存储库安装1、vue3npminstallpinia--save2、vue2npminstallpinia@vue/composition-api--save引入1、vue3再main.js中import{createPinia......
  • 基于遗传算法的物流管理系统
    原型是车辆路径规划问题(VRP)使用SpringBoot+ElementUI+MySQL搭建网站。登录页面:有三个选项,对应三种用户登录,会进入不同页面。修改密码页面:可以修改多项用户信息,和登......
  • JS 算法
    1、js统计一个字符串出现频率最高的字母/数字letstr='absafdaf234234323232'leta=[...str]//alert(ainstanceofArray)conststrChar=......
  • 前端加密算法之SM4
    1、简介1.1、国产加密算法,是一个分组算法,该算法的分组长度为128bit,密钥长度为128bit,SM4算法与AES算法具有相同的密钥长度分组长度128比特,因此在安全性上高于3DES算......
  • 算法和空间复杂度分析
    看代码:1intcal(intn){2intsum=0;3inti=1;4for(;i<=n;++i){5sum=sum+i;6}7returnsum;8从cpu角度来看,这段代码每一行都执行......
  • Redis的持久化方式RDB和AOF的区别
    1.概论使用到Redis做缓存,方便多个业务进程之间共享数据。由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数......
  • docker-swarm集群及NFS持久化存储方案
    一、系统环境系统centos7.6主机4台(1管理节点+3工作节点)docker版本19.03.13禁用防火墙开启以下配置:cat>>/etc/sysctl.conf<<EOFnet.bridge.bridge-nf-call-ip6tab......
  • 前端加密算法之SHA1
    1、简介和前篇所讲的MD5加密算法一样,都属于哈希算法,尽管安全性要高于MD5,但运算速度要比MD5慢2、实现因为同属于哈希算法,所以也可以使用hashlib库实现1impo......