首页 > 其他 > 详细

组合计数·经典序列问题

时间:2016-08-06 23:30:36      阅读:341      评论:0      收藏:0      [点我收藏+]

1. LA 5092 Permutation Counting

题意:给定$1\sim 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$的排列个数。

分析:我们可以这样从$1\sim (i-1)$的排列构造为$1 \sim i$的排列:将$i$放在$1 \sim (i-1)$的一个排列的末尾,

再考虑将其分别与$1\sim (i-1)$排列的任一个数交换,便可得到$(1 + i - 1) \cdot (i - 1) ! = i!$个新的排列。由此考虑

将$1\sim 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.

组合计数·经典序列问题

原文:http://www.cnblogs.com/astoninfer/p/5745053.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!