码迷,mamicode.com
首页 > 其他好文 > 详细

一些数据结构题

时间:2015-04-22 21:57:05      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

树上的操作

3282 Tree

删边, 连边, 单点修改, 询问路径异或和。

 

1984: 月下“毛景树”

路径覆盖, 路径增加, 询问路径 max

简单树剖

 

3306: 树

要支持 换根, 修改点权,  查询子树最小值

不换根就是简单的dfs序线段树, 换根的话只需要知道当前根与查询的点的关系:如果查询点是根的儿子, 那么直接询问就可以; 如果询问点是根, 那么输出sum; 否则根一定在查询点的某个子树中,所以这个时候我们要查询的是原树中除了这棵子树以外其它所有点的min, 而这可以用在线段树上询问两次实现([1, start[son[x]]) ∪ (end[son[x]], n]) 

 

 

3083: 遥远的国度

和上题一样, 但要支持路径修改, 所以说只是拓展到树剖上。

 

spoj cot

两点路径第k小

按照dfs序对每个点到根的路径建立可持久化权值线段树, 然后求出lca搞一下就好了。

 

3123: [Sdoi2013]森林

和上题一样, 但是多了一个合并的操作。

每次启发式合并然后暴力重建就可以了。

因为因为一个点最多被合并logn次, 每次合并是logn的, 所以总复杂度 nlog^2n

 

一些数据结构题

标签:

原文地址:http://www.cnblogs.com/lixintong911/p/4448714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!