CF1575L Longest Array Deconstruction

题目描述

Chanek 先生给你一个从 $1$ 到 $n$ 编号的序列 $a$。定义 $f(a)$ 为满足 $a_i = i$ 的下标 $i$ 的个数。 你可以从当前序列中选择一个元素并将其移除,然后将剩下的元素拼接在一起。例如,如果你从序列 $[4, 2, 3, 1]$ 中移除第 $3$ 个元素,得到的新序列为 $[4, 2, 1]$。 你希望通过移除若干个元素(可以为零),使得 $f(a)$ 最大。请你求出可以得到的最大的 $f(a)$。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 2 \times 10^5$),表示初始序列的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \leq a_i \leq 2 \times 10^5$),表示初始序列 $a$。

输出格式

输出一个整数,表示通过若干次操作后可以得到的最大的 $f(a)$。

说明/提示

在第一个样例中,通过如下操作可以得到 $f(A) = 3$: $[2,1,\textbf{4},2,5,3,7] \rightarrow [\textbf{2},1,2,5,3,7] \rightarrow [1,2,5,3,\textbf{7}] \rightarrow [1,2,\textbf{5},3] \rightarrow [1,2,3]$ 在第二个样例中,$f(A) = 2$,且无需进行任何操作。 由 ChatGPT 4.1 翻译