loj558 「Antileaf's Round」我们的CPU遭到攻击

考完了可以发题解了。

做法是link-cut tree维护子树信息,并不需要维护黑树白树那些的。

下面是一条重链:

如果4是根的话,那么在splay上是这样的:

在splay中,子树的信息都已经计算完毕,那么需要计算这个子树的答案。

这个子树有4个部分:

4:树根。
1,2,3:树根上面的点。
5,6:树根下面的点。
other:树根的虚子树。

那么简化一下:

显然是需要记录答案的,还要记录什么?

  • 3,4会受到1,2的影响,所以答案要加上3,4中黑点数×1,2中权值和
  • 1会受到2的影响,所以答案要加上1中黑点数×2中权值和
  • 没了。剩下的都在原来就计算好了。

所以还要记子树黑点数和权值和。

然后就做完了。

吗?

注意一下,splay有reverse操作,所以还要记一个反的答案(丧心病狂,,,),不过虚子树答案不用反过来。

代码太长丢链接跑:https://loj.ac/submission/94648

猜你喜欢

转载自www.cnblogs.com/xzz_233/p/8974095.html