最近做题有时会碰到斯特林数(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∑n​ss​(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∑n​su​(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∑n​s(n,k)xk=xn↓=xn−1↓∗(x−n+1)=k=0∑n−1​s(n−1,k)xk+1−n∗k=0∑n−1​s(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​]s​xi
我们可以通过这个公式在Θ(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−1​i1​
∑k=0nsu(n,k)=n!\sum_{k=0}^ns_u(n,k)=n!k=0∑n​su​(n,k)=n!
容易发现,每一个排列都对应着一个轮换(相当于i到ai连一条边的一副图),然后枚举轮换里环的数量就好了

应用

第一类斯特林数是一种在组合方面比较有用的数,很多问题都可通过它来解决,熟悉它的性质,才能熟练的运用到公式推导的过程中去

第一类斯特林数学习记录相关推荐

  1. 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT多项式】permutation

    目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...

  2. 洛谷P4609 [FJOI2016]建筑师 【第一类斯特林数】

    题目链接 洛谷P4609 题解 感性理解一下: 一神带\(n\)坑 所以我们只需将除了\(n\)外的\(n - 1\)个元素分成\(A + B - 2\)个集合,每个集合选出最大的在一端,剩余进行排列 ...

  3. 建筑师 第一类斯特林数

    文章目录 目录 题意: 思路: 目录 题意: 给你一个nnn的排列,排列中的数代表他的高度,问你有多少个排列能使得从左边能看到aaa个建筑,从右边能看到bbb个建筑. 如果建筑iii左边没有任何比他高 ...

  4. [HDU 3625] Examining the Rooms(第一类斯特林数)

    Examining the Rooms problem solution code problem hdu 3625 solution 之前考试有一道题:最多砸开 kkk 扇门,采取最有操作,求把 n ...

  5. CF960G-Bandit Blues【第一类斯特林数,分治,NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/CF960G 题目大意 求有多少个长度为nnn的排列,使得有AAA个前缀最大值和BBB个后缀最大值. 0≤n,A,B≤ ...

  6. [数学最安逸][UVa1638改编][第一类斯特林数+组合数]杆子的排列

    有高为1,2,3,...,n的杆子各一根排成一行.从左边能看到l根,从右边能看到r根,求有多少种可能. (l,r <= 200,n <= 200000) 给出T 组数据 (T <= ...

  7. 斯特林数 java实现_斯特林数学习笔记

    定义 第一类斯特林数\(s(n,m)\)表示把\(n\)个不同元素放到\(m\)个相同圆排列里的方案数. 有转移方程: \[s(n,m)=s(n-1,m-1)+(n-1)\times s(n-1,m) ...

  8. 【BJOI2019】勘破神机(下降幂转自然幂)(第一类斯特林数)(特征方程)

    传送门 题解: 完全自己推出来的第一道数学神题. 首先我们知道宽度为222的部分方案数是斐波那契数列. 设fnf_nfn​表示长度为nnn的时候方案数,题目要求的实际上是这个东西: ∑n=lr(fnk ...

  9. zoj3344 第一类斯特林数+java大数

    题意:有个游戏,两个人玩.有n个卡片,洗牌后放入编号为1到n的盒子里,然后两个人轮流做如下操作,拿出盒子中编号最小的卡片k,然后再去编号为k的盒子中拿出卡片,依次类推,直到没有卡片可拿为止.拿走最后一 ...

最新文章

  1. “反机器学习”:人工智能突破的关键是“遗忘”
  2. SQL Server(第二章) 字符串函数、日期时间函数、转换函数
  3. 【C language】C语言二分法查找
  4. 面试中常见的查找与排序
  5. vue 集成 Loading 加载效果
  6. python 选择题 多线程_python多线程练习题
  7. Sqlserver 2005 配置 数据库镜像:Mirror 的注意事项!!!!!!!!!
  8. c语言给vbs传递一组字符串,调用VBS脚本引擎,执行VBS代码。字符串的四则运算  TC...
  9. a59s刷机包卡刷 oppo_OPPO A59S刷机包下载|OPPO A59S刷机包官方下载-太平洋下载中心...
  10. 集线器、交换机、网桥区别
  11. 4g+uim卡是什么卡_你知道SIM卡是什么吗?
  12. django-DIL模板自定义过滤器,自定义标签,自定义包含标签
  13. 跑步,找到自己的节奏
  14. [收藏] Javascript Keycode表
  15. 阿里云服务器cnetos7常用命令
  16. 【增强版短视频去水印源码】去水印微信小程序+去水印软件源码
  17. openvz学习笔记
  18. 电脑重装系统后会闪屏是什么原因
  19. 疯狂java 第十章输入输出 读书笔记
  20. python基础:案例:学生名片信息管理系统

热门文章

  1. 数据库-优化-SQL及索引优化
  2. SpringBoot的配置文件-通过@ConfigurationProperties映射数据
  3. mac 由于网络问题,您已断开与 windows 计算机的联接.,苹果电脑启用windows系统时连接不上无线网怎么处理?...
  4. php 验证 e mail,PHP 表单验证 - 验证 E-mail 和 URL
  5. delphi query 存储为dbf_在Delphi程序中维护DBF数据库
  6. 如何免安装服务器将 React 整合进 Spring Boot
  7. Java 13 的下载安装教程
  8. pip指定包的安装路径
  9. Vim键盘图/Vim快捷键
  10. 设计原则--开放-封闭原则(OCP)