简单题。
\(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)\)。
标签:最大值,Greedy,CF1132G,Subsequences,端点,全局 From: https://www.cnblogs.com/Ender32k/p/17569080.html