首页 > 其他分享 >变种线段树 提高篇

变种线段树 提高篇

时间:2024-09-06 15:46:36浏览次数:9  
标签:左子 log 变种 线段 每次 建树 复杂度 提高

可持久化线段树

注意,它的全称为可持久化权值线段树

例题 \(1\):可持久化线段树 2

首先我们考虑几个暴力:

对于每次询问,找出区间中的所有数,直接排序求第 \(k\) 小。这样做的时间复杂度为 \(O(nq\log n)\) 的。

对于每次询问,建出一棵权值线段树,然后权值线段树上二分查找即可。

发现瓶颈在于建树,如果忽略建树则复杂度为 \(O(q\log n)\) 的。

我们把每次插入一个数后看做一个历史版本,那么区间 \([l,r]\) 内的数就是 \(r\) 历史版本与 \(l-1\) 历史版本做差。这就是我们的询问。

考虑每次插入一个数改变了什么,改变了一条链上的信息,链最长不过树高,树高为 \(\log n\),所以每次插入一个数是 \(O(\log n)\) 的,建树总时间复杂度 \(O(n\log n)\)。

查询的时候,因为做了前缀和,所以我们考虑左子树内的数的数量是否不小于当前的\(k\),如果是,递归左子树;否则递归右子树,同时 \(k\) 减去左子树内数的数量,查询最后会返回这个被离散化后的值,还原一下即可。

标签:左子,log,变种,线段,每次,建树,复杂度,提高
From: https://www.cnblogs.com/zxh923aoao/p/18400319

相关文章

  • 洛谷P1032 [NOIP2002 提高组] 字串变换
    ac代码:#include<bits/stdc++.h>usingnamespacestd;constintN=15;structnode{ stringstr; intstep;};stringa,b;stringorginal[N];stringtranslated[N];intn,ans;map<string,int>ma;stringtrans(conststring&str,inti,i......
  • 天润融通解开售后维修的成本枷锁,提高维修服务效率
    如今,企业客户服务在开展业务咨询和售后受理时,主要方式还是通过电话与在线方式进行。这种方式虽然方便,但是对于一些非常紧急的情况还是显得有些不够。比如,虽然现在许多企业APP已经实现了一键咨询和一键报修,但当客服收到问题反馈后,还需要将预约记录转交给维修工程师,之后维修工程师再......
  • 【机器学习】模型性能与可解释性的矛盾以及如何提高可解释性和模型性能
    引言文章目录引言一、模型性能与可解释性的矛盾1.1矛盾的一些关键点1.1.1模型性能1.2可解释性1.3矛盾点1.3.1复杂性与简单性1.3.2黑盒模型1.3.3业务需求1.3.4合规性和责任1.4解决方案1.4.1使用可解释的模型1.4.2模型简化1.4.3后验可解释性技术1.4.4模型......
  • 旧衣物回收小程序制作,提高回收效率
    近几年,旧衣回收受到了大众的关注,市场迎来了快速发展期。大众不再将闲置衣物丢弃,从而选择回收,减少资源浪费,实现资源再利用,从而推动绿色生活的理念。旧衣回收小程序是一种线上回收应用系统,可以为大众提供非常大的便利性,能够提高旧衣回收的效率。那么开发一个旧衣物回收小程序需要那些......
  • Java应用的数据库读写分离:提高数据库性能
    Java应用的数据库读写分离:提高数据库性能大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天,我们将探讨如何在Java应用中实现数据库读写分离,以提高数据库性能和系统的可扩展性。数据库读写分离是一种常见的架构模式,通过将读操作和写操作分配到不同的......
  • dfs P1019 [NOIP2000 提高组] 单词接龙
    题目大意:单词接龙,找出最长的长度的单词。题解:由于数据量较小,单词可多次使用,使用后可回溯,考虑dfs。代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintN=1e3+10;intn,used[N],ans;stringa[N],start;voiddfs(stringword){......
  • 3种提高内容写作的反套路方法
    空洞的词句就像内容创作中的“空热量”。它们也许能增加你的字数,但却会让你的信息变得毫无意义。一小点空洞的词句可能对读者来说只是个小小的分心——但如果过多,就会迅速失控。冗长的表达会让你的内容变得难以阅读、不可信,甚至显得像垃圾信息。是什么让写作变得空洞?写作中......
  • 打卡信奥刷题(696)用Scratch图形化工具信奥B3922[普及组/提高] [GESP202312 一级] 小杨
    [GESP202312一级]小杨报数题目描述小杨需要从111到NNN报数......
  • 2024年多校联考公益周赛第29场(提高级)
    赛时:\(0+0+0\)。补题:\(100+100+0\)。T1hash即可。code#include<bits/stdc++.h>#defineullunsignedlonglongusingnamespacestd;constintN=1e4+5;constintP=13331;strings,t;intm,ss,tt,ans;ullps[N],pt[N],hss[N],hst[N];voidhss_init(){......
  • Java代码的静态分析:提高代码质量和安全性
    Java代码的静态分析:提高代码质量和安全性大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在软件开发过程中,代码质量与安全性至关重要。静态代码分析是一种在不运行代码的情况下,通过自动化工具检查代码中潜在的错误和安全漏洞的方法。Java作为一种广泛......