博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[学习笔记]猫树
阅读量:6943 次
发布时间:2019-06-27

本文共 510 字,大约阅读时间需要 1 分钟。

一种O(nlogn)+O(1)+O(nlogn)的、通过对分治树的预处理、可以支持无修改树上路径、区间问题的算法

无论能不能重复贡献、能不能具有可减性,只要具有结合律并且可以快速合并(只用合并一次),并且预处理时空消耗不大,

对于许多组询问的问题有很大的优势。

由ImmortalCO喵提出。

 

对于序列和区间查询

预处理:开始先分治时候预处理当前区间每个点到mid的前缀/后缀信息

查询:先长度变成2^k,LCA就是叶子编号的LCP,可以x>>log2[x^y]求出。O(1)定位,然后利用预处理信息合并一次即可。

 

相较于线段树省略了划分成logn区间再合并的麻烦。

相较于前缀和可以处理不可减信息(如gcd)

相较于RMQ可以处理不能重复贡献(如最大子段和)问题

树上

其实这和动态点分治思想异曲同工

可以预处理到logn分治重心路径的信息。

分治树LCA用ST表预处理O(1)查询

然后直接定位之后查询即可了。

 

之所以消掉了logn,因为预处理使得区间、路径可以O(1)拼凑在一起。

通过分治树的结构搞事情。

 

转载于:https://www.cnblogs.com/Miracevin/p/10701277.html

你可能感兴趣的文章
家庭里如何搭建一个互联网可访问的服务器
查看>>
eclipse与SVN 结合(删除SVN中已经上传的问题)
查看>>
深入理解Fsync
查看>>
去掉xcode编译warning:ld: warning: directory not found for option '-L
查看>>
杭电1702--ACboy needs your help again!
查看>>
web前端开发分享-css,js进阶篇
查看>>
quick sort(重复数版)
查看>>
乌班图 root权限获取
查看>>
【转载】aspx,ascx和ashx使用小结
查看>>
我的Android进阶之旅------> Android在TextView中显示图片方法
查看>>
调整CodeIgniter错误报告级别
查看>>
python连续爬取多个网页的图片分别保存到不同的文件夹
查看>>
时间记录日志
查看>>
Node.js
查看>>
进程 线程通信方式(转载)
查看>>
python 从小白开始 - 字符串操作(不可修改)
查看>>
微信小程序 app.json 配置
查看>>
ROCKETMQ——2主2从集群部署
查看>>
横向纵向菜单制作 Jquery
查看>>
Android SDK更新以及ADT更新出现问题的解决办法
查看>>