CF1132G Greedy Subsequences

简单题。

\(i\)\(i\)第一个 \(j\)\(a_j\)\(a_i\) 大的点连边,不难发现最后形成了一棵森林,并且一个点的父亲 \(\text{fa}_i>i\)

题目变成了取 \([l,r]\) 中的点为起点,向祖先方向走去并且终点编号 \(\le r\) 的最长链长度。

考虑离线,维护从每个点开始的最长链长度 \(f_i\),答案即全局查询最大值。

如果 \(i<l\),相当于删去 \(i\) 点,\(f_i\) 可以直接赋为 -inf,由于询问左端点递增,暴力修改即可。

考虑加入一个右端点 \(r\) 对答案的贡献,对于所有 \(r\) 子树内并且未被删去的点 \(i\)\(f_i\gets f_i+1\)

维护子树加,单点修改,全局查询最大值即可,\(O(n\log n)\)

评测记录。

posted @ 2023-07-20 18:38  Ender_32k  阅读(5)  评论(0编辑  收藏  举报