传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2870
看完就想到点分治了
可是用传统的点分治合并两条子树的链的时候很蛋疼……
于是我们换个方式
找到重心后把子树分成两堆,统计过根且起始结束位置在两个不同的堆里的答案
递归两堆子树
这种思想很早就有了 http://hi.baidu.com/345585690/item/fc3d0dd3167c28896cce3f09 http://blog.sina.com.cn/s/blog_76f6777d0101imnn.html
而且也不是很难写
如果把分治过程记录下来就可以做到动态修改询问,不过好像没人给这种数据结构起名字(或者我太弱了不知道)……
我就给它起名叫点分树了……
边分加虚点,括号序列什么的都太神了不会
好像树上点/链修改,整体/子树 路径查询的题不多……(QTREE有几个,wc,zjoi也有)
似乎可以有一大波新题诞生(又要被D了233)?
不过说起来这道题是静态的我在这扯什么蛋……
马上就去写1095
Code: