LCA、树上差分、树链剖分、换根 DP……
今天回去做模板题时,使用了倍增法——以前能 AC 的代码现在 TLE 了。最后换了 Tarjan 才 AC。这警示我们,当 LCA 成为瓶颈时,应当考虑时间更优的算法。
树剖本身很好写,两次 DFS 即可。但大多数题目都需要使用数据结构维护树链信息,主要是线段树。这里需要注意线段树维护的信息,不要把内容跟 tag 搞混。另外跨链的信息也需要格外小心地处理。
还有,代码从简不从繁,思维优先,平衡码量与时间复杂度。