特殊计数序列——第一类斯特林(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- ...
随机推荐
- Openresty的同步输出与流式响应
Openresty的同步输出与流式响应 默认情况下, ngx.say和ngx.print都是异步输出的,先来看一个例子: location /test { content_by_lua_block { ...
- Mybatis实现部门表增删改查以及排序
废话不说,直接开门见山! 需要在WebContent下的lib下导入两个包 mybatis-3.2.5.jar ojdbc6.jar package com.xdl.entity; import ja ...
- 安装centos5.x的基本优化配置
1.添加账号
- 获取元素CSS样式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- web安全—sql注入漏洞
SQL注入-mysql注入 一.普通的mysql注入 MySQL注入不像注入access数据库那样,不需要猜.从mysql5.0以上的版本,出现一个虚拟的数据库,即:information_schem ...
- memcached 学习
memcached 是什么 特点 协议简单 基于 libevent 的事件处理 内置内存存储方式 memcached 不互相通信的分布式 启动 安装 依赖 libevent 安装命令 下载地址在这个网 ...
- 数据库【mysql篇】学习笔记
Windows服务 -- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意 ...
- iis问题
1.8.5版本的iis配置完成,不能打开网页显示503.原因是应用程序池,加载用户配置文件失败,然后应用程序池关闭了.关闭它就可以正常打开了. server2008,打不开网页,打开url显示目录的原 ...
- ctrl+shift+r / ctrl+f5 强制(不使用缓存)刷新google chrome网页
我改了csdn图片后, 一直看到的是旧图片, n天之后, 还是旧图片.猜测应该是用了缓存(且缓存更新逻辑失败, 定是csdn的bug), 用ctrl+shift+r, 或者ctrl+f5, 强制刷新页 ...
- Clion快捷键
快捷键配置 File->Setting->Keymap->Keymaps 选择Visual Studio风格 代码提示的匹配模式 File->Setting->Edito ...