10.9 考试总结
2321
sb 题,质因数分解后对于指数讨论即可。
2324
考场想到了但是树上 \(k\) 级祖先写挂了。/kk
对于一组询问 \((x,y)\),可以分成两种情况:有祖系关系与否。
考虑如何统计答案。
维护 \(dp_x,up_x\) 表示子树内/外的点到点 \(x\) 的路径权值之和。
对于第一种情况,答案总计是有 \(sz_x \times sz_y\) (数量级)条路径的。那么除开路径 \((x,y)\) 的答案是 \(dp_x \times dp_y\) 的。由于乘法分配律的优秀性质,对于这些路径是要乘上询问点对的路权的。
使用 LCA 快速算路径长度,快速幂算路权即可。
对于第二种情况,相当于是将第一种情况的一个端点转换到子树外了。这个要注意一点细节。对于深度较大的点求它的 \(dis(x, y) - 1\) 级祖先,容斥维护答案即可。
时间复杂度 \(O(n \log n)\),puck 老年机直接给我 T 飞!
所以还有一个线性做法。
把 \(up_i\) 的定义换一下:不含儿子子树的路径权值之和。
于是就不需要 \(O(\log n)\) 的树上 \(k\) 级祖先了。
离线 tarjan LCA 可以做到 \(O(n)\)。
总时间复杂度 \(O(n)\)。
还是没有通过图灵测试,资材。