CF1254D Tree Queries
树转链
操作一算一个点
x
x
x对其余点的贡献:
1.对于不在以
x
x
x为子树的点,
x
x
x对其贡献可以用区间先更新一遍整颗树,再把
x
x
x的子树抵消掉
2.对于在以
x
x
x为子树的点,
x
x
x对每个儿子子树的贡献概率都不一样,如果直接枚举儿子节点更新,时间爆炸,所以可以暂时只给重儿子的子树更新,然后给
x
x
x存个标记。在查询时 ,只要让当前查询点
y
y
y,不断通过重链向上跳,每次由重链顶端节点的父亲标记更新,就能保证不重不漏
P3313 [SDOI2014] 旅行
树转链,动态开点线段树+树链剖分,对于每个信仰建立一个线段树,不断更新,路径跟lca一样两点不断往上跳即可,因为每次单点修改时间空间都为
(
l
o
g
n
)
(log n)
(logn),所以空间复杂度
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)
CF191C Fools and Roads
边转点,树转链,树链剖分维护路径,线段树或树状数组处理区间修改,单点查询