杂题思路笔记

本贴用来记录口糊出来的杂题的思路、做法等。

没有代码,可能有错。

CF490F Treeland Tour

题目链接

DFS + 线段树合并。

树上最长上升子序列在一个以 uu 为根的子树内可以看作以 f_i1f\_{i}-1 为结尾的 LIS + 1(uu 节点)+ 以 f_i+1f\_{i}+1 为结尾的 LDS。

至于子树内的 LIS 之前肯定更新过了。

具体的,进行 DFS,从孩子向父亲更新。

对于每个节点,开一棵权值线段树,第 ii 个叶子结点存以数值 ii 为结尾的 LIS。

DFS 向上回溯时,从以 uu 的儿子 vv 为根的子树中找出一条最长的 LIS,更新答案,再将 vv 的权值线段树合并到 uu 上。

合并的时候再考虑一下从已更新的其他儿子的子树中找出的 LIS 或 LDS 与 vv 的子树中 LDS 或 LIS 加上 uu 形成的 LIS 对答案的贡献。

处理完 uu 的子节点后回溯之前将 fuf_{u} 加到 uu 的权值线段树里去。

P3224 [HNOI2012]永无乡

题目链接

思路非常简单。

用并查集维护连通块内有哪些岛,再线段树合并到连通块内的根的权值线段树上。