1. LA 5092 Permutation Counting
题意:给定$1sim n$的排列${a_1, a_1,..., a_n}$,满足$a_i > i $的下标$i$的个数称为此排列的$E$值,
例如${1,3,2,4}$的$E$值为$1$,${4, 3, 2, 1}$的$E$值为$2$,给定整数$n$和$k(1 leq n leq 1000, 0 leq k leq n)$,
求$E$值恰好为$k$的排列个数。
分析:我们可以这样从$1sim (i-1)$的排列构造为$1 sim i$的排列:将$i$放在$1 sim (i-1)$的一个排列的末尾,
再考虑将其分别与$1sim (i-1)$排列的任一个数交换,便可得到$(1 + i - 1) cdot (i - 1) ! = i!$个新的排列。由此考虑
将$1sim i$的排列满足$E$值为$j$的个数设为$dp(i, j)$,那么将数$i$放置在末尾或者与那些已经贡献$1$的位置进行交换总的贡献不变,
反之则加$1$,因此有状态转移:
$dp(i, j) = (1 + j) * dp(i - 1, j) + (i - j) * dp(i - 1, j - 1)$
边界条件:
$dp(i, 0) = 1$
2.