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

BZOJ 3551 ONTAK2010 Peaks加强版 Kruskal重构树+可持久化线段树

时间:2014-11-21 16:21:43      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:bzoj   bzoj3551   kruskal   可持久化线段树   

题目大意:同3545 强制在线

3545题解传送门:http://blog.csdn.net/popoqqq/article/details/40660953

强制在线没法排序 启发式合并也就用不了了

Kruskal重构树是个挺好玩的东西 可以拿来处理一些最小生成树的边权最值问题

这里我们Kruskal连边时并不直接连边 而是新建一个节点ext 将两个点所在子树都连到ext的儿子上

比如说样例的树就建成了这样

bubuko.com,布布扣

图中红色的是原图的边权,黑色的是原图上的点

这样生成的树有一些十分优美的性质:

1.二叉树(好吧这题意义不大)

2.原树与新树两点间路径上边权(点权)的最大值相等

3.子节点的边权小于等于父亲节点(大根堆)

4.原树中两点之间路径上边权的最大值等于新树上两点的LCA的点权

于是对于每个询问 我们从这个询问向上倍增寻找深度最小的点权小于等于x的点 易证这个节点的子树就是v所能到达的所有点

DFS序+可持久化线段树直接搞就行

BZOJ 3551 ONTAK2010 Peaks加强版 Kruskal重构树+可持久化线段树

标签:bzoj   bzoj3551   kruskal   可持久化线段树   

原文地址:http://blog.csdn.net/popoqqq/article/details/41348785

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