特殊计数序列——第一类斯特林(stirling)数
第一类斯特林数
在这里我因为懒所以还是用\(S(n,m)\)表示第一类斯特林数,但一定要和第二类斯特林数区分开来
递推式
\(S(n,m)=S(n-1.m-1)+S(n-1,m)*(n-1)\)
其中\(S(0,0)=1,S(i,0)=0(i>0)\)
组合意义
\(n\)个元素组成\(m\)个圆排列的方案数
注意这里圆排列指的是两个排列经过旋转能重合的算一种方案
那么递推式就可以这样理解:对于当前的第\(n\)个元素,单独成一个圆排列有\(S(n-1,m-1)\)种方案,放在其它的圆排列中有\(S(n-1,m)*(n-1)\)种方案,即放在每个元素的左侧(右侧等价于另一个元素的左侧)
性质
1、\(S(n,1)=(n-1)!\)
圆排列定义
2、\(\sum_{i=1}^{n}S(n,i)=n!\)
我们知道\(1-n\)这\(n\)个元素能形成\(n!\)个个排列,也就是\(n!\)个置换,而将置换写成循环的形式,这又对应着一个圆排列,于是就建立起了\(n\)排列和第一类斯特林数一一对应的关系
3、\(x^\underline{n}=\sum_{i=0}^nS(n.i)(-1)^{n-i}x^i\),\(x^\overline{n}=\sum_{i=0}^nS(n,i)x^i\)
证明的话考虑数学归纳法,这里仅给出第一条的证明
\[
\begin{aligned}
x^{\underline{n+1}}=&(x-n)x^{\underline{n}}\\
=&(x-n)\sum_{i=0}^nS(n,i)(-1)^{n-i}x^i\\
=&\sum_{i=0}^nS(n,i)(-1)^{n-i}x^{i+1}-n\sum_{i=0}^nS(n,i)(-1)^{n-i}x^i\\
=&\sum_{i=1}^{n+1}S(n,i-1)(-1)^{n-i+1}x^i+n\sum_{i=0}^nS(n.i)(-1)^{n-i+1}x^i\\
=&\sum_{i=0}^{n+1}(S(n,i-1)+nS(n.i))(-1)^{n-i+1}x^i\\
=&\sum_{i=0}^{n+1}S(n+1,i)(-1)^{n-i+1}x^i
\end{aligned}
\]
求解第一类斯特林数
最普通的方法就是\(O(n^2)\)的递推啦,考虑有没有更优的方法
我们先丢结论:
\[
S(n,m)=[x^m]\prod_{i=0}^{n-1}(x+i)
\]
计算右式的话可以使用分治+NTT在\(O(nlog^2n)\)的时间内解决,但是这么做的理由是什么?
设现在求的是\(S(n,m)\)我们记\(f_n(x)=\prod_{i=0}^{n-1}(x+1)\),然后把这个式子写成类似于递推的形式:
\[
f_n(x)=(x+n-1)f_{n-1}(x)=xf_{n-1}(x)+(n-1)f_{n-1}(x)
\]
第一项\(xf_{n-1}(x)\)就相当于\(S(n-1,m-1)\),第二项\((n-1)f_{n-1}(x)\)就相当于\((n-1)*S(n-1,m)\),也就是说这个式子对应的递推式就是\(S(n,m)=S(n-1,m-1)+(n-1)*S(n-1,m)\),正确性也就显然了
特殊计数序列——第一类斯特林(stirling)数的更多相关文章
- 【HDU 4372】 Count the Buildings (第一类斯特林数)
Count the Buildings Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- hdu 4372 第一类stirling数的应用/。。。好题
/** 大意: 给定一系列楼房,都在一条水平线上,高度从1到n,从左侧看能看到f个, 从右侧看,能看到b个,问有多少种这样的序列.. 思路: 因为肯定能看到最高的,,那我们先假定最高的楼房位置确定,那 ...
- 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT&多项式】permutation
目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...
- CF960G Bandit Blues 第一类斯特林数、NTT、分治/倍增
传送门 弱化版:FJOI2016 建筑师 由上面一题得到我们需要求的是\(\begin{bmatrix} N - 1 \\ A + B - 2 \end{bmatrix} \times \binom ...
- HDU3625(SummerTrainingDay05-N 第一类斯特林数)
Examining the Rooms Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- 组合计数 && Stirling数
参考: http://blog.csdn.net/qwb492859377/article/details/50654627 http://blog.csdn.net/acdreamers/artic ...
- CF960G(第一类斯特林数)
题目 CF960G 做法 设\(f(i,j)\)为\(i\)个数的序列,有\(j\)个前缀最大值的方案数 我们考虑每次添一个最小数,则有:\(f(i,j)=f(i-1,j)+(i-1)*f(i-1,j ...
- UVA11077 Find the Permutations —— 置换、第一类斯特林数
题目链接:https://vjudge.net/problem/UVA-11077 题意: 问n的全排列中多有少个至少需要交换k次才能变成{1,2,3……n}. 题解: 1.根据过程的互逆性,可直接求 ...
- CF960G Bandit Blues(第一类斯特林数)
传送门 可以去看看litble巨巨关于第一类斯特林数的总结 设\(f(i,j)\)为\(i\)个数的排列中有\(j\)个数是前缀最大数的方案数,枚举最小的数的位置,则有递推式\(f(i,j)=f(i- ...
随机推荐
- Flutter map 妙用及 .. 使用
前言 本篇文章对于熟悉 flutter 或者 dart 的小伙伴来说可能觉得比较简单,但是对于初学者或者没用过的小伙伴还是有些收获的. 背景 说到 map 妙用的发现,还要归功于 Tooltip 的研 ...
- C#实现.ini文件读写操作
1.ini文件是什么? 见百度百科:https://baike.baidu.com/item/ini%E6%96%87%E4%BB%B6/9718973?fr=aladdin 2.C#语 ...
- EF Core 快速上手——创建应用的DbContext
系列文章 EF Core 快速上手--EF Core 入门 EF Core 快速上手--EF Core的三种主要关系类型 本节导航 定义应用的DbContext 创建DbContext的一个实例 创建 ...
- tomcat,httpd 日志格式说明
tomcat 日志说明 配置文件server.xml 默认日志格式为 pattern="%h %l %u %t "%r" %s %b" 推荐使用 pattern ...
- thinkphp5路由心得
路由的作用:1. 简化URL地址,方便大家记忆2. 有利于搜索引擎的优化,比如可以被百度的爬虫抓取到 优化URl1. 前后端分离修改入口文件,在public下新建admin.php文件,将下面的代码添 ...
- 演示Eclipse插件实现代码提示和补全
续上文重拾< 两周自制脚本语言 >- Eclipse插件实现语法高亮, 但仅达到了演示Eclipse本身功能的程度, 与石头语言并无直接联系. 源码库相同, 仍在同一插件. 演示效果如下: ...
- MongoDB个人简单总结
当同一个变量被连续插入两次会出现id相同的异常,但是同样内容的两个变量同时插入不会有问题,可能是同一个变量同一个地址生成id相同,导致异常. 默认登陆不需要用户名密码认证,需要密码认证登陆需要在adm ...
- FelxCell常用属性设置(未完待续......)
this.grid1.AllowUserPaste//返回或设置是否允许用户粘贴文字和格式 grid1.Cell(Rows, 1).WrapText = true;//设置单元格自动换行
- CynosDB技术详解——架构设计
本文由腾讯云数据库发表 前言 CynosDB是新一代分布式数据库,100%兼容MySQL和PostgreSQL,支持存储弹性扩展,一主多从共享数据,性能更是超越社区原生MySQL和PostgreSQL ...
- FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证
本文设计思想采用明德扬至简设计法.上一篇博文中定制了自定义MAC IP的结构,在用户侧需要位宽转换及数据缓存.本文以TX方向为例,设计并验证发送缓存模块.这里定义该模块可缓存4个最大长度数据包,用户根 ...