题面
题目描述
给出一个长度为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))即可.
懒得代码了.