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] \times (n - i)! - g[i + 1] \times (i - 1)! \times (i + 1)\), 用一棵权值树状数组来进行优化, \(O(n^2 \log n)\)即可.
懒得代码了.