博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
组合计数·经典序列问题
阅读量:5766 次
发布时间:2019-06-18

本文共 615 字,大约阅读时间需要 2 分钟。

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.

转载于:https://www.cnblogs.com/astoninfer/p/5745053.html

你可能感兴趣的文章
电池温度检测原理和示例代码
查看>>
Linux服务器性能评估与优化、监控利器---dstat应用
查看>>
hdu 2842 Chinese Rings 矩阵快速幂
查看>>
Powershell进阶学习(4) Powershell强大的利器“管道”
查看>>
关于GNU GPL
查看>>
request.getServletPath()和request.getPathInfo()用法
查看>>
nginx在响应request header时候带下划线的需要开启的选项
查看>>
Linux下DHCP服务器配置
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
mybatis学习笔记之学习目录(1)
查看>>
我的IDEA配置
查看>>
myeclipse显示行号
查看>>
编写高性能的java程序
查看>>
Spring 的配置详解
查看>>
linux已经不存在惊群现象
查看>>
上位机和底层逻辑的解耦
查看>>
学习进度条
查看>>
关于微信二次分享 配置标题 描述 图片??
查看>>
springcloud使用zookeeper作为config的配置中心
查看>>
hystrix实战之javanica
查看>>