数星星

提供几种做法。

1.回滚莫队+虚树

(假了)

2.树剖+树状数组+平衡树。

先思考一下如何做链的问题。

无修改问题可以用扫描线。

对链扫描线没什么希望,所以对询问扫描线。

维护相同颜色连续段。发现每次如果暴力更新连续段,则时间复杂度是O(nlogn)的,所以写个set维护即可。

用树状数组查询。

树的做法把树剖分成链即可。

3.lct+树状数组。

上面的做法用set维护连续段,根据sdoi树点涂色的启发使用lct维护连续段。

在赋值时修改即可。

4.线段树+树状数组+树剖。

树点涂色这道题其实也可以使用线段树维护,这道题也可以用那道题的方法维护。但是比较难写。

5.分治+虚树+树状数组。待补。

原文地址:https://www.cnblogs.com/cszmc2004/p/13144363.html