主席树
——By 徐亦轲
HDU2665
给定n个数字,m个询问,每次求[L,R]内的第k大值
N=100000
询问次数=100000
线段树?然而只能查最大
主席树【可持久化线段树/函数式线段树】(Persistent Tree)
一种神奇的数据结构
一种离线数据结构
可以查询区间第k大
复杂度log(n)
名词解释:在线/离线
在线就是一边读数据一边处理
离线就是把所有数据读完一起处理
假设只要求所有数字中第k大?
先将所有数字离散化(排序+去重)(所以是离线)
对离散化后的数字建立一颗线段树,每个节点统计当前数字范围内的数出现了多少次
自顶向下查找,如果左边区间个数大于等于k则在左边,小于则在右边
所以复杂度log(n)
那么对于任意一段区间[L,r]..
建立n颗线段树,每棵维护[1,i]的数字出现情况
则[L,R]=[1,R]-[1,L-1](前缀和思想)
然后查找就可以了
然而还有一个问题
n棵线段树,每棵2n个点,怎么也是n2的空间
MLE?
我们有神奇的解决方法
注意到每棵新树都是上一棵树改了一条从某叶子到根节点的路径
那么除了这条路径,其他的都可以直接从上一棵树上蒯过来
大概就长这样了--
那么空间复杂度O(nlogn)
所以HDU2665代码
略长不贴了
想看的/2015/12/%E3%80%90%E4%B8%BB%E5%B8%AD%E6%A0%91%E3%
您可能关注的文档
- 主题英语词汇(初级)1选编.ppt
- 安全施工作业指导书2005.2汇编.doc
- 自助5-6日游三亚攻略选编.doc
- 安全施工通知书汇编.doc
- 安全旁站监理方案汇编.doc
- 主题与主语选编.ppt
- 安全施工组织设计汇编.doc
- 主题阅读《我的伯父鲁迅先生》课件选编.ppt
- 安全月知识竞赛题汇编.doc
- 安全月知识竞赛汇编.pptx
- 力士乐数控系统MTX NC固定循环.docx
- 发格数控系统40_i_P数显表安装操作手册.docx
- T∕SDJZXH 005-2025 建设工程智慧监理建设评价标准.pdf
- FANUC发那科数控系统FANUC OPEN CNC 操作说明书(DNC 运行管理软件.docx
- T∕CASMES 661-2026 停车场(库)公共设施配建导则.pdf
- T∕GZBECTA 007-2025 民用建筑碳排放计算指南.pdf
- FANUC发那科数控系统16i 18i 160i 180i - Model A Maintenance.pdf
- T∕CADP 9-2023 高路堤路段与天然气管道交叉工程 通道涵技术要求.pdf
- 发格数控系统8055参数备份和恢复.pdf
- Mazak马扎克数控系统马扎克(Mazak)FMS介绍.docx
原创力文档

文档评论(0)