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)\)即可.

懒得代码了.

posted @ 2017-07-11 20:16  Zeonfai  阅读(138)  评论(0编辑  收藏  举报