排列期望LIS

博客探讨了如何计算n的排列中最长上升子序列(LIS)的期望值。提出了三种方法:暴力求解(时间复杂度O(n!logn))、动态规划(空间优化后的时间复杂度O(n22^n))以及使用杨图的解法。难点在于统计LIS总数,通过算法优化降低复杂度。
摘要由CSDN通过智能技术生成

如题,求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[1i]压缩来的,每一次转移考虑在末位添加一个数x,同时将原排列中大于等于x的数往上抬高一,比如说在 { 4 , 1 , 3 , 2 } \{4,1,3,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值