本问题要求统计删除一个下标区间 [l, r] 后,剩余序列(可以为空)满足非递减性质的方案总数。由于直接枚举所有区间会超时,我们可以利用双指针技巧在线性时间内完成。
[l, r] 后,剩余部分由前缀 [1, l-1] 和后缀 [r+1, n] 拼接而成。合法需要满足:
a[l-1] <= a[r+1](哨兵处理边界)。小蓝得到了一个长度为 n 的正整数序列,他希望序列是非递减的。一种操作是:选择下标 l 和 r (1≤l≤r≤n),删除从第 l 个到第 r 个元素(含两端),剩余元素按原顺序拼接。如果拼接后的序列满足非递减(即对于所有相邻元素 x,y 有 x≤y),则本次操作合法。特别地,若删除后没有剩余元素,也视为合法。
请你帮小蓝计算有多少种合法的下标对 (l,r)。
约束:序列长度 n 不超过 2×10^5,序列中的每个数都是正整数,且不超过 10^9。
第一行包含一个整数 n (1≤n≤2×105),代表序列长度。
第二行包含 n 个整数 a1,a2,…,an (1≤ai≤109),依次表示序列元素。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.