杂题思路笔记
本贴用来记录口糊出来的杂题的思路、做法等。
没有代码,可能有错。
CF490F Treeland Tour
题目链接。
DFS + 线段树合并。
树上最长上升子序列在一个以 $u$ 为根的子树内可以看作以 $f_{i}-1$ 为结尾的 LIS + 1($u$ 节点)+ 以 $f_{i}+1$ 为结尾的 LDS。
至于子树内的 LIS 之前肯定更新过了。
具体的,进行 DFS,从孩子向父亲更新。
对于每个节点,开一棵权值线段树,第 $i$ 个叶子结点存以数值 $i$ 为结尾的 LIS。
DFS 向上回溯时,从以 $u$ 的儿子 $v$ 为根的子树中找出一条最长的 LIS,更新答案,再将 $v$ 的权值线段树合并到 $u$ 上。
合并的时候再考虑一下从已更新的其他儿子的子树中找出的 LIS 或 LDS 与 $v$ 的子树中 LDS 或 LIS 加上 $u$ 形成的 LIS 对答案的贡献。
处理完 $u$ 的子节点后回溯之前将 $f_{u}$ 加到 $u$ 的权值线段树里去。
P3224 [HNOI2012]永无乡
题目链接。
思路非常简单。
用并查集维护连通块内有哪些岛,再线段树合并到连通块内的根的权值线段树上。