点分治入门

引入

考虑比树链剖分稍微简单的情况,统计树上具有某种特殊性质的路径,而不发生修改。(这部分按道理来讲应该接在线段树/树状数组/分块之类的后面学才对啊)

一般来讲这些树都是无根树。

对于一条链,可以取中间的一个点,把它划分为两个部分(分别属于这个点的两课不同子树)。之后可以利用分治的方法对于每一棵树都做这样的分解,最后把所有子树上满足题意的路径都统计到,就能够得到答案了。但是在统计的过程中两个节点有可能属于同一棵子树,便可能出现错误,所以还要统计在同一棵子树上的情况,并把它们去掉。

例题

似乎用一道具体的题目会清楚一些?

poj1741 Tree 求一棵树上长度不超过k的路径有多少条。

利用刚才说的方法,把这棵树划分成多个子树

---待更新

猜你喜欢

转载自www.cnblogs.com/waxwing/p/10117192.html