原题链接
解题思路:
我们知道3e5的三进制表示只有12位。考虑建图。发现题目所述2与园方树的性质相像,用tarjan算法跑园方树。对于树上的每个点维护三个信息:
sum
t
表示若有一条以节点
t
为结尾的序列
c
,它的总贡献。
ssum
t
表示对于以节点
t
为根的整棵子树的总贡献。
sumsont 表示对于节点 t 的所有儿子,它们的 ssum 之和。
由于这棵树的高度较低(本题中不会超过
23
),考虑对每一个圆点暴力往上跳,计算答案。对于当前跳到的点,我们考虑当前点的贡献和兄弟节点的贡献。有了预处理好的数组,这部分的计算是容易的。总时间复杂度 O
(
n
log
3
n
)
,可以通过本题。
别想看代码了,
我也没写