BZOJ 4361 ISN

题面

题目描述

给出一个长度为n的序列A(A1,A2...AN)。如果序列A不是非降的,你必须从中删去一个数,
这一操作,直到A非降为止。求有多少种不同的操作方案,答案模10^9+7。

输入格式

第一行一个整数n。
接下来一行n个整数,描述A。

输出格式

一行一个整数,描述答案。

样例输入

4
1 7 5 3

样例输出

18

数据范围

1<=N<=2000
ai没超long long就对了

关于题意

非降 = 单调不下降

题解

我们考虑一个长度为(i)的串, 必定是由一个长度为(i + 1)的串去掉一位而来, 并且满足这个长度为(i + 1)的串是不合法的.
因此我们令(g[i])表示原串中长度为(i)的不下降子序列的数量, 则结束时串的长度为(i)的方案数为(f[i] = g[i] imes (n - i)! - g[i + 1] imes (i - 1)! imes (i + 1)), 用一棵权值树状数组来进行优化, (O(n^2 log n))即可.

懒得代码了.

原文地址:https://www.cnblogs.com/ZeonfaiHo/p/7152422.html