[Ynoi2016] 这是我自己的发明
如果没有换根,子树询问转化为区间询问。同 [SNOI2017] 一个简单的询问,由于询问在序列维上具有加性,将区间询问变为四个前缀询问后容斥。前缀询问使用莫队解决。
考虑到换根+子树的经典做法,分类讨论:
- 如果 $u$ 为根,子树即整棵树。
- 如果 $u$ 不在 $0$ 到根的链上,子树不变。
- 否则 $u$ 的子树为整棵树除去 $u$ 包含根的那颗儿子子树。
第三种情况,要么把询问拆成前缀加后缀的形式,要么拆成整个序列减去某个区间的形式。
第一种方法会将一个区间询问拆成九个前缀询问,会被卡常;第二种方法可以一通推式子,对整棵树相关的答案进行预处理。这样就仍能在四个询问内解决。
[Ynoi2016] 这是我自己的发明