题目大意
题目描述
给定正整数 N 和 (1,2,…,N) 的一个排列 P=(P1,P2,…,PN)。
有三个变量 x,y,c,初始时 x=y=c=0。
你需要按 k=1,2,…,N 的顺序,依次执行下列两种操作之一:
-
操作 1:若 x<Pk,则将 c 增加 1;随后将 x 替换为 max(x,Pk)。
-
操作 2:若 y<Pk,则将 c 增加 1;随后将 y 替换为 max(y,Pk)。
求最终 c 的最大可能值。
输入格式
输入从标准输入以如下格式给出:
N
P1 P2 … PN
输出格式
输出一行一个整数,表示答案。
数据范围
-
1≤N≤5×105
-
P 是 (1,2,…,N) 的一个排列
-
输入的所有值均为整数
样例
按如下方式操作可以达到 c=4:
-
k=1 时:执行操作 1,此时 (x,y,c)=(4,0,1)。
-
k=2 时:执行操作 1,此时 (x,y,c)=(4,0,1)。
-
k=3 时:执行操作 2,此时 (x,y,c)=(4,1,2)。
-
k=4 时:执行操作 2,此时 (x,y,c)=(4,2,3)。
-
k=5 时:执行操作 2,此时 (x,y,c)=(4,5,4)。
无论如何操作都无法使 c 超过 4,因此输出 4。
思路讲解

我们不难注意到,这个前缀最大值数组中出现的值,我们必须要选啊,而且不仅仅是必须要选,我们的有一个 X / Y 的上升序列一定就是长这个样!否则就不是很优秀啊。
AC代码
心路历程(WA,TLE,MLE……)