原题链接:
提交记录:
http://uoj.ac/submission/337253
有生之年系列,退役前填坑。。。
做法是用替罪羊树的思想维护动态点分治树,这里不细讲,网上一抓一大把,这里主要谈谈本人的(超大常数)实现细节:
1 我们需要存下点分治树结构,并对于点分树上每个点开一棵平衡树来支持修改及询问。
2 点分树上任意两点距离不可视为相连边权之和,因此点分树上不维护距离。将原树结构存下来,写个倍增LCA来维护距离。
3 点分树重构平衡因子alpha设成0.8较优
4 平衡树建议使用Treap,Splay亲测会TLE。平衡树需要写垃圾回收,不然会MLE。
5 Treap随机权值的事情。。。。为了避免每次重新随机可以一开始随机好存到表里
6 原树和点分树结构的变量名一定要区分好,小心变量名用混