[CF1132G] Greedy Subsequences 题解

显然每个数的后继是固定的。
处理每个区间,应该是每次加一个点,删一个点。但是我们发现原来的模型对于加点和删点并不友好,每次要影响到的点是散的,并不是一个连续的区间。

我们考虑将后继关系建出树形结构。具体地,将一个点的父亲设为其后继。没有后继的,向 \(0\) 号根结点连边。每个结点的深度就是其 Greedy Subsequence 的长度。
然后我们对树做出 DFS 序。我们发现,加一个点影响到的恰好是其子树内的点,即将子树内的点深度加一。
删一个点似乎不好直接在 DFS 序上维护。换个角度,我们将其深度修改为 \(-\infty\),让答案不可能取到它就行。

于是,我们需要一个支持区间修改(加一,及单点修改)、查询全局最大的数据结构。可以采用线段树。
时间复杂度 \(O(n\log n)\)

submission.

posted @ 2025-02-10 16:28  Water_M  阅读(25)  评论(0)    收藏  举报