做的心力交猝。
写了一晚上也没能调过去。
不过确实知道了该怎么做。
感觉自己最近效率并不是很高。
考虑点分治,对于当前分治中心,统计出它自己出发到分治块内的所有路径对自己答案的贡献,和经过它的路径对当前分治块内点的贡献。自己出发到分治块内的所有路径对自己答案的贡献很好求,现在考虑怎么求经过它的路径对当前分治块内点的贡献。
考虑只有在这个点的颜色是他到根的第一次出现才计算贡献\(s[x]\)
那么考虑对一个点求贡献。
先把他的贡献删掉。
用其他子树的贡献来更新他。
而在他前缀的子树里的点,那么只有颜色在一些没有出现这个颜色的贡献里才会有贡献。
讲的可能不是很清楚呜呜,我现在调的脑子不好用了。
代码我哪天调完会放出来的。