MONOPLOY

题意

一棵有 N 个点的树,1号点为根。一开始每个点有各自不同的一种颜色,一个点 u 的权值定义为u 1 的路径上经过的点的不同的颜色种数。Q次操作,每次操作为以下两种之一:
1.q     输入点 u ,询问以点u为根的子树中所有点的平均权值。
2.O    输入点 u ,将点u到树根 1 路径上的所有点染成同一种之前未出现过的颜色。

N,Q150000

分析

注意到树的形态并不会改变,那我们可以先弄出 dfs 序,方便对一个子树进行维护。接下来考虑怎样修改答案。
我们仔细观察 O 操作,联想一下LCT access 操作。每次染色,我们可以看成 access(u) 操作,不在同一 Auxiliary  Tree 的节点颜色不同。而且,我们能发现,当且仅当一条边虚实切换(虚边变实边或实边变虚边)时,它连接的深度较大的节点的子树才会受影响。具体是:虚边变实边时,该子树内所有节点的权值 1 ;实边变虚边时,该子树内所有节点的权值 +1 。我们用线段树维护就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值