动态的树链剖分

来源:互联网 发布:linux git 源码安装 编辑:程序博客网 时间:2024/06/14 09:55
这里的技巧可能没你们想的那么强大。。
但我之前也没听过这样用的,觉得可以拿来说一说

在各个LCT维护的题中,有些题目不需要cut操作,其实有cut几乎不可能维护
比如不断加边求桥边个数,求LCA(这个有cut也可以维护= =)
只有link的话,树链剖分也是可以胜任的
思想其实非常简单,启发式合并即可
比如link(x,y)
由于不支持换根,必须暴力重构较小的一棵树(y)
重构完后接上去就行了
不过因为要维护树剖的性质,要看看x-y是否应该成为重边
这里不应该思考如何维护size数组,其实只用递归进原来的重边,当统计的点数大于y树点数立刻退出即可
至此,树链剖分的合并已经解决,时间复杂度nlogn,不考虑树剖上数据结构的重建和分裂等操作

啦啦啦♪(^∇^*)是不是很naive啊?