第一类斯特林数学习记录
最近做题有时会碰到斯特林数(Stirling数),就觉得好好的学习一番,于是呢,写下这篇博客,来记录一些知识
简单介绍
第一类斯特林数表示表示将 n 个不同元素构成m个圆排列的数目。——百度百科
第一类斯特林数,可以表示为s(n,m)s(n,m)s(n,m),注意这里是小写
,要与大写的第二类斯特林数区分开来,定义上面也讲到了,但是呢,其实那句话最好改成第一类斯特林数的绝对值,因为第一类斯特林数是分正负的,分为无符号斯特林数su(n,m)s_u(n,m)su(n,m)和有符号斯特林数ss(n,m)s_s(n,m)ss(n,m)
有无符号Stirling数分别表现为其升阶函数和降阶函数的各项系数[类似于二项式系数],形式如下:
xn↓=x(x−1)(x−2)⋅⋅⋅(x−n+1)=∑k=0nss(n,k)xkx^{n\downarrow}=x(x-1)(x-2)···(x-n+1)=\sum_{k=0}^ns_s(n,k)x^kxn↓=x(x−1)(x−2)⋅⋅⋅(x−n+1)=k=0∑nss(n,k)xk
xn↑=x(x+1)(x+2)⋅⋅⋅(x+n−1)=∑k=0nsu(n,k)xkx^{n\uparrow}=x(x+1)(x+2)···(x+n-1)=\sum_{k=0}^ns_u(n,k)x^kxn↑=x(x+1)(x+2)⋅⋅⋅(x+n−1)=k=0∑nsu(n,k)xk
这是一个很烦的式子,但其实呢,有符号和无符号斯特林数之间的关系其实很简单ss(n,m)=(−1)n+msu(n,m)s_s(n,m)=(-1)^{n+m}s_u(n,m)ss(n,m)=(−1)n+msu(n,m)
另外,这个式子的推导可以见我的另一篇博客:第二类斯特林数学习记录
计算公式
第一类斯特林数有个递推式很好想
想一下对于su(n,m)s_u(n,m)su(n,m)
若n=0n=0n=0,m=0m=0m=0那么显然就一种方案
若n≠0n\neq0n̸=0,m=0m=0m=0那么肯定分配不了,有0种方案
若n≠0n\neq0n̸=0,m≠0m\neq0m̸=0
那么考虑转移
倘若由su(n−1,m−1)s_u(n-1,m-1)su(n−1,m−1)转移而来,则说明新来的一个点自成一个环只有一倍的贡献
倘若由su(n−1,m)s_u(n-1,m)su(n−1,m)转移而来,则说明新来的一个点插入到m个环中的n-1个空格的任何一个位置,那么就有n-1倍的贡献,递推式为su(n,m)=su(n−1,m−1)+(n−1)∗su(n−1,m)s_u(n,m)=s_u(n-1,m-1)+(n-1)*s_u(n-1,m)su(n,m)=su(n−1,m−1)+(n−1)∗su(n−1,m)
有符号的第一类斯特林数的递推式为ss(n,m)=ss(n−1,m−1)−(n−1)∗ss(n−1,m)s_s(n,m)=s_s(n-1,m-1)-(n-1)*s_s(n-1,m)ss(n,m)=ss(n−1,m−1)−(n−1)∗ss(n−1,m)
证明是前面那个公式∑k=0ns(n,k)xk=xn↓=xn−1↓∗(x−n+1)=∑k=0n−1s(n−1,k)xk+1−n∗∑k=0n−1s(n−1,k)xk\sum_{k=0}^ns(n,k)x^k=x^{n\downarrow}=x^{n-1\downarrow}*(x-n+1)=\sum_{k=0}^{n-1}s(n-1,k)x^{k+1}-n*\sum_{k=0}^{n-1}s(n-1,k)x^kk=0∑ns(n,k)xk=xn↓=xn−1↓∗(x−n+1)=k=0∑n−1s(n−1,k)xk+1−n∗k=0∑n−1s(n−1,k)xk
依次把xmx^mxm在左右两边的系数提取出来得到
另外有这个式子:(证明在第二类斯特林数的博客里)
xn↓=∑i=0n[ni]sxix^{n\downarrow}=\sum_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}_sx^ixn↓=i=0∑n[ni]sxi
我们可以通过这个公式在Θ(nlog2n)\Theta(nlog^2n)Θ(nlog2n)的复杂度内用分治+FFT求出某个nnn对应的所有su(n,m)s_u(n,m)su(n,m)值
性质
除了一些比较容易想到的性质外,第一类斯特林数还有如下性质
su(n,2)=(n−1)!∗∑i=1n−11is_u(n,2)=(n-1)!*\sum_{i=1}^{n-1}\frac{1}{i}su(n,2)=(n−1)!∗i=1∑n−1i1
∑k=0nsu(n,k)=n!\sum_{k=0}^ns_u(n,k)=n!k=0∑nsu(n,k)=n!
容易发现,每一个排列都对应着一个轮换(相当于i到ai连一条边的一副图),然后枚举轮换里环的数量就好了
应用
第一类斯特林数是一种在组合方面比较有用的数,很多问题都可通过它来解决,熟悉它的性质,才能熟练的运用到公式推导的过程中去
第一类斯特林数学习记录相关推荐
- 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT多项式】permutation
目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...
- 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】
题目链接 洛谷P4609 题解 感性理解一下: 一神带\(n\)坑 所以我们只需将除了\(n\)外的\(n - 1\)个元素分成\(A + B - 2\)个集合,每个集合选出最大的在一端,剩余进行排列 ...
- 建筑师 第一类斯特林数
文章目录 目录 题意: 思路: 目录 题意: 给你一个nnn的排列,排列中的数代表他的高度,问你有多少个排列能使得从左边能看到aaa个建筑,从右边能看到bbb个建筑. 如果建筑iii左边没有任何比他高 ...
- [HDU 3625] Examining the Rooms(第一类斯特林数)
Examining the Rooms problem solution code problem hdu 3625 solution 之前考试有一道题:最多砸开 kkk 扇门,采取最有操作,求把 n ...
- CF960G-Bandit Blues【第一类斯特林数,分治,NTT】
正题 题目链接:https://www.luogu.com.cn/problem/CF960G 题目大意 求有多少个长度为nnn的排列,使得有AAA个前缀最大值和BBB个后缀最大值. 0≤n,A,B≤ ...
- [数学最安逸][UVa1638改编][第一类斯特林数+组合数]杆子的排列
有高为1,2,3,...,n的杆子各一根排成一行.从左边能看到l根,从右边能看到r根,求有多少种可能. (l,r <= 200,n <= 200000) 给出T 组数据 (T <= ...
- 斯特林数 java实现_斯特林数学习笔记
定义 第一类斯特林数\(s(n,m)\)表示把\(n\)个不同元素放到\(m\)个相同圆排列里的方案数. 有转移方程: \[s(n,m)=s(n-1,m-1)+(n-1)\times s(n-1,m) ...
- 【BJOI2019】勘破神机(下降幂转自然幂)(第一类斯特林数)(特征方程)
传送门 题解: 完全自己推出来的第一道数学神题. 首先我们知道宽度为222的部分方案数是斐波那契数列. 设fnf_nfn表示长度为nnn的时候方案数,题目要求的实际上是这个东西: ∑n=lr(fnk ...
- zoj3344 第一类斯特林数+java大数
题意:有个游戏,两个人玩.有n个卡片,洗牌后放入编号为1到n的盒子里,然后两个人轮流做如下操作,拿出盒子中编号最小的卡片k,然后再去编号为k的盒子中拿出卡片,依次类推,直到没有卡片可拿为止.拿走最后一 ...
最新文章
- “反机器学习”:人工智能突破的关键是“遗忘”
- SQL Server(第二章) 字符串函数、日期时间函数、转换函数
- 【C language】C语言二分法查找
- 面试中常见的查找与排序
- vue 集成 Loading 加载效果
- python 选择题 多线程_python多线程练习题
- Sqlserver 2005 配置 数据库镜像:Mirror 的注意事项!!!!!!!!!
- c语言给vbs传递一组字符串,调用VBS脚本引擎,执行VBS代码。字符串的四则运算 TC...
- a59s刷机包卡刷 oppo_OPPO A59S刷机包下载|OPPO A59S刷机包官方下载-太平洋下载中心...
- 集线器、交换机、网桥区别
- 4g+uim卡是什么卡_你知道SIM卡是什么吗?
- django-DIL模板自定义过滤器,自定义标签,自定义包含标签
- 跑步,找到自己的节奏
- [收藏] Javascript Keycode表
- 阿里云服务器cnetos7常用命令
- 【增强版短视频去水印源码】去水印微信小程序+去水印软件源码
- openvz学习笔记
- 电脑重装系统后会闪屏是什么原因
- 疯狂java 第十章输入输出 读书笔记
- python基础:案例:学生名片信息管理系统
热门文章
- 数据库-优化-SQL及索引优化
- SpringBoot的配置文件-通过@ConfigurationProperties映射数据
- mac 由于网络问题,您已断开与 windows 计算机的联接.,苹果电脑启用windows系统时连接不上无线网怎么处理?...
- php 验证 e mail,PHP 表单验证 - 验证 E-mail 和 URL
- delphi query 存储为dbf_在Delphi程序中维护DBF数据库
- 如何免安装服务器将 React 整合进 Spring Boot
- Java 13 的下载安装教程
- pip指定包的安装路径
- Vim键盘图/Vim快捷键
- 设计原则--开放-封闭原则(OCP)