【OI】关于斯特林数的简单理解
斯特林数分为第一类斯特林数:S1(n,k)和第二类斯特林数:S2(n,k)。
S1(n,k)代表在n个元素中选出k个环的方案数,S2(n,k)代表在n个元素中选出k个非空集合的方案数,
不同之处在于,在第一类斯特林数中我们在意这些环的顺序,在第二类斯特林数中我们不在意顺序,但在意集合中装了什么(感觉类似排列组合中的有序组合(P)和无序组合(C))。
第一类斯特林数的公式是:
S1(n,m)=(n-1)*S1(n-1,m)+S1(n-1,m-1)
如何推导出这些:
我们在n-1的时候可能有两种状态:
1.已有m个环, 从某个元素数>1的环中加入一个元素,转移到m个环的状态,环有顺序,共有n-1个元素,所以可以插入到任意一个元素的左边,因此有n-1个种可能
2.已有m-1个环,直接把这个元素作为一个新环,转移到m个环的状态,因为只加入一个环,所以没有其他状态
根据状态1得到(n-1)*S1(n-1,m);根据状态2得到S1(n-1,m-1),合起来就是第一类斯特林数公式:S1(n,m)=(n-1)*S1(n-1,m)+S1(n-1,m-1)
第二类斯特林数的公式是:
S2(n,m)=m*S2(n-1,m)+S2(n-1,m-1)
如何推导出这些:
在n-1的时候可能有两种状态:
1.已有m个集合,因为不考虑顺序,可以插入m个集合中任意的集合,所以有m种可能
2.已有m-1个集合,直接把这个元素作为一个新集合,没有其它状态
根据状态1得到m*S1(n-1,m);根据状态2得到S1(n-1,m-1),合起来就是第二类斯特林数公式:S2(n,m)=m*S2(n-1,m)+S2(n-1,m-1)
【OI】关于斯特林数的简单理解的更多相关文章
- 如何快速求解第一类斯特林数--nlog^2n + nlogn
目录 参考资料 前言 暴力 nlog^2n的做法 nlogn的做法 代码 参考资料 百度百科 斯特林数 学习笔记-by zhouzhendong 前言 首先是因为这道题,才去研究了这个玩意:[2019 ...
- 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT&多项式】permutation
目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...
- BZOJ5093图的价值(斯特林数)
题目描述 “简单无向图”是指无重边.无自环的无向图(不一定连通). 一个带标号的图的价值定义为每个点度数的k次方的和. 给定n和k,请计算所有n个点的带标号的简单无向图的价值之和. 因为答案很大,请对 ...
- BZOJ 4555: [Tjoi2016&Heoi2016]求和 (NTT + 第二类斯特林数)
题意 给你一个数 \(n\) 求这样一个函数的值 : \[\displaystyle f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i} \begin{Bmatrix} i \\ j ...
- 【BZOJ】4555: [Tjoi2016&Heoi2016]求和 排列组合+多项式求逆 或 斯特林数+NTT
[题意]给定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5. [算法]生成函数+排列组合+多项式求逆 [题解]参考: [BZOJ4555][Tjoi2016& ...
- CF961G Partitions(第二类斯特林数)
题目 CF961G 前置 斯特林数\(\Longrightarrow\)斯特林数及反演总结 做法 相信大家能得出一个一眼式:\[Ans=\sum\limits_{i=1}^n w_i\sum\limi ...
- 国家集训队 Crash 的文明世界(第二类斯特林数+换根dp)
题意 题目链接:https://www.luogu.org/problem/P4827 给定一棵 \(n\) 个节点的树和一个常数 \(k\) ,对于树上的每一个节点 \(i\) ,求出 \( ...
- [转]简单理解Socket
简单理解Socket 转自 http://www.cnblogs.com/dolphinX/p/3460545.html 题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公 ...
- Deep learning:四十二(Denoise Autoencoder简单理解)
前言: 当采用无监督的方法分层预训练深度网络的权值时,为了学习到较鲁棒的特征,可以在网络的可视层(即数据的输入层)引入随机噪声,这种方法称为Denoise Autoencoder(简称dAE),由Be ...
随机推荐
- 诊断:CLSRSC-400: A system reboot is required to continue installing.
Linux7.5安装Grid Infrastructure 12.2.0.1时,在root.sh时会报错 2018/01/30 09:19:28 CLSRSC-330: Adding Clusterw ...
- sql分组和连接
SELECT mr.member_id, mr.username, GROUP_CONCAT(DISTINCT jb.company,jb.start_time,jb.end_time)company ...
- [Python3网络爬虫开发实战] 1.3.1-lxml的安装
lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高.本节中,我们了解一下lxml的安装方式,这主要从Windows.Linux和Mac三大平台来 ...
- assert.doesNotThrow()
assert.doesNotThrow(block[, error][, message]) 断言 block 函数不会抛出错误.查阅 assert.throws() 了解更多详情. 当调用 asse ...
- restframework框架之认证
1. 认证之APIView 在聊APIView之前, 我们先重温一下django2.x的CBV流程 a. 对于django而言, 当浏览器请求到达之后,按照规则首先会经过各大中间件(Middlewar ...
- [Android] java代码无错误,但跳转失败
今天在调代码的时候,出现了这样的问题,我晕了半天,才找到解决办法. 查看日志发现:Initialize Binary Program Cache: Load Failed 从来没见过这种问题,Java ...
- 配置Django+mysql+pydev(x64)
mysqldb需要安装64位的(http://ishare.iask.sina.com.cn/f/21839771.html),否则出现 import _mysql ImportError: DLL ...
- vector元素的删除 remove的使用 unique的使用
在vector删除指定元素可用以下语句 : v.erase(remove(v.begin(), v.end(), element), installed.end()); 可将vector中所有值为el ...
- centos7安装mysql5.7.19及配置远程连接
centos7安装mysql5.7.19及配置远程连接------https://blog.csdn.net/Lh19931122/article/details/77996213
- Leetcode 215.数组中的第k个最大元素
数组中的第k个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 ...