首页 > 其他分享 >平衡树的简单替代品

平衡树的简单替代品

时间:2024-05-10 11:56:08浏览次数:13  
标签:log 删除 插入 复杂度 类别 随机 简单 替代品 平衡

1、STL / gnu_pbds

1、vector<int>

常用,动态空间注意比较慢,远古题数据小才建议使用。

支持操作 复杂度
序列类别
随机访问 \(O(1)\)
尾部插入删除 \(O(1)\)
随机插入删除 \(O(玄学),O(\sqrt{n})\)
集合类别
none

2、set<int>

维护数集的,它的常数真的很奇妙。

支持操作 复杂度
序列类别
none
集合类别
前驱后继 \(O(\log(n))\)
随机插入删除 \(O(\log(n))\)
查找某数 \(O(\log(n))\)

3、rope

维护序列,不熟,跳过,但是可以区间覆盖,所以能通过文艺平衡树板子,操作复杂度 \(O(\sqrt{n})\)。

4、pbds_tree

标准的平衡树了。

只能维护数集,功能略强于 set。

支持操作 复杂度
序列类别
none
集合类别
前驱后继 \(O(\log(n))\)
随机插入删除 \(O(\log(n))\)
查找某数 \(O(\log(n))\)
查询数的排名 \(O(\log(n))\)
查询 kth \(O(\log(n))\)

数据结构

0、链表

指针位置插入删除,指针移动一格 \(O(1)\)。

1、块状链表

很难写,还不如写平衡树 / vector。

支持类型不重要,我不会写的。(

2、值域线段树

很复杂,先跳了。

3、树状数组上二分

很神奇的一种操作,没有随机插入时很好用。

支持操作 复杂度
序列类别
随机访问 \(O(\log(n))\)
头尾部插入删除 \(O(\log(n))\)
随机删除 \(O(\log(n))\)
集合类别
none

标签:log,删除,插入,复杂度,类别,随机,简单,替代品,平衡
From: https://www.cnblogs.com/FunStrawberry/p/18184026

相关文章

  • 一个简单的MD5加盐
    虽然都说MD5加密一下密码比较好,但是如果密码过于简单,比如123456,经过MD5加密之后还是不安全,因为别有用心的人可以使用彩虹表来撞库得到密码。因此为了加大破解难度,需要给MD5算法加盐。下面是一个简单的加盐算法。当然,我不是说加了盐就一劳永逸了,下面的代码也不安全,这样做只是为了......
  • dremio CatalogMaintenanceService 服务简单说明
    说明此服务是从25.0开始包含的,同时在releasenote中也有说明,以下主要说明下内部实现release信息如下,具体就不翻译了,主要是添加了一个每个任务进行每个view最大保留50个历史信息Addeddailycatalogmaintenancetaskstotrimhistoryofviewstoamaximumof50......
  • react + antd + js 简单Cron组件,支持国际化
    Cron.jsimportReact,{Fragment,useState,useCallback,useRef,useEffect}from'react';import{Select,TimePicker,Input}from'antd';constOption=Select.Option;constmwidth80={minWidth:80,marginRight:10};constwidt......
  • 前端导出简单的Excel
    //报表导出exportProjectCount:asyncfunction(){letthat=this;awaitthat.getProjectCount().then(()=>{console.log("日志输出",that.dataCount.length)letdataLi......
  • PCIE思考:简单路由
    上电:主机设备上电,BIOS通过扫描下游设备的BAR,为其注册响应的空间,当需要对这些空间进行操作的时候,就会转换成TLP包的形式进行访问,当然直接和PCIE设备交互的还是RC;其中BAR的低位(具体情况具体分析)作为寻址其的地址;简单DMA读步骤(PCIE设备发起读):1.下游设备发起请求;2.CPU把数据写到......
  • .net core web项目在docker中简单部署方法
    #这是我的dockerFile文件FROMmcr.microsoft.com/dotnet/aspnet:8.0ASbaseUSERappWORKDIR/appEXPOSE8080EXPOSE8081#设置入口点CMD["dotnet","ImageCreate.dll"]#ImageCreate.dll代表你的应用 docker-compose.yml version:'3'servic......
  • nicegui:Python 图形界面库,简单好用
    前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构建吸......
  • dbt plugin 系统简单说明
    dbt实际上提供了一个plugin架构(属于扩展与adapter的plugin机制是不一样的)只是目前官方缺少文档的说明以下是一些简单说明内部处理插件接口定义目前相对简单,只提供了核心是3个方法initialize,get_nodes,get_manifest_artifactsclassdbtPlugin:"""......
  • nicegui:Python 图形界面库,简单好用
    前言在现代计算机应用程序开发中,图形用户界面(GUI)是用户与程序交互的重要组成部分。然而,GUI开发往往需要大量的代码和复杂的布局,给开发者带来了一定的挑战。在本篇博文中,将介绍nicegui,它是一个简单易用的图形用户界面库,提供了一种简化GUI开发的方式,使开发者能够更快速地构建吸......
  • Altium PCB添加平衡铜/盗铜的方法(依旧是简单粗暴)
    最近画的板子遇到了PCB残铜率不足的问题,一般想法也是用整板覆铜的方法来填满空旷的区域,但是这个会带来很多碎铜,特别是表层有元器件,覆铜会产生更多碎铜,但是不覆铜又会导致残铜率低,板厂的说法是残铜率过低会导致PCB外层电镀时电流不均衡,后果就是铜箔厚度不均匀,内层残铜率过低会影响......