如题,求n的排列的LIS的期望值
难点主要在统计LIS的总数
算法一
暴力每一种排列,nlogn计算LIS,时间复杂度 O ( n ! log n ) O(n!\log n) O(n!logn)
算法二
DP
对于一个n的排列,设 h [ i ] h[i] h[i]表示最长的末位不超过i的最长上升子序列,比如说 { 3 , 1 , 2 , 5 , 4 } \{3,1,2,5,4\} {
3,1,2,5,4}中, h [ 3 ] = 2 , h [ 4 ] = 3 h[3]=2\ ,h[4]=3 h[3]=2 ,h[4]=3
设 f [ i ] [ s ] f[i][s] f[i][s]表示i的排列中状态为s的,s是由 h [ 1 → i ] h[1\to i] h[1→i]压缩来的,每一次转移考虑在末位添加一个数x,同时将原排列中大于等于x的数往上抬高一,比如说在 { 4 , 1 , 3 , 2 } \{4,1,3,