斯特林数(第一类斯特林数/第二类斯特林数) 欧拉数 伯努利数 斐波那契数 性质(知识点整理)

心得

其实具体数学上都有,就当做笔记了,整理一些知识点和结论

思路来源

https://www.cnblogs.com/Milkor/p/4734763.html

https://www.cnblogs.com/YoungNeal/p/10366962.html

①斐波那契数

F[1]=F[2]=1,F[n]=F[n-1]+F[n-2],这里令F[0]=0

可以矩阵快速幂,做到O(logn)求第n项(n<=1e18)

常用结论:(不附证明,用F[n]=F[n-1]+F[n-2]代入展开或递归代入即证,证明见思路来源)

F(n)与F(n-1)互质

②第一类斯特林数

s(n,m)将 n 个元素划分为 m 个圆排列(环,由环上的数组成)的方案数。

s(n,m)=s(n-1,m-1)+(n-1)*s(n-1,m)\\

s(n,m)=s(n-1,m-1)(第n个自己开一个圆)+(n-1)*s(n-1,m)(第n个插入之前的n-1个元素构成的空位,环上有x个元素则有x个空位)

相关公式:n!=\sum_{i=0}^ns(n,i)

比如排列 (1,5,2,3,4),就可以看作轮换组 [1][2,5,4,3]。

(令i跳向pi,则第二位置的5跳到第五位置,第四位置,第三位置,有轮换组[2,5,4,3]成立,显然排列与轮换一一对应)

所以等式右侧的式子就是有 0∼n 个轮换组依次对应的方案数之和。

快速求某行或某个的第一类斯特林数的系数,需要用生成函数NTT之类,不会,待补

应用:1866. 恰有 K 根木棍可以看到的排列数目

dp[i][j]前i个能看到j个,考虑放到结尾的数是不是最大的数,

是的话+=dp[i-1][j-1],不是的话i-1个抽一个过来(i-1)*dp[i-1][j]

③第二类斯特林数

第二类斯特林数S(n,m),S(n,m)=n个不同小球,放到m个相同盒子的方案,要求盒子均非空

\begin{Bmatrix}n\\m\end{Bmatrix}=m\begin{Bmatrix}n-1\\m\end{Bmatrix}+\begin{Bmatrix}n-1\\m-1\end{Bmatrix}

S(n,m)=S(n-1,m-1)(第n个自己放一个盒子)+m*S(n-1,m)(第n个可以放之前的m个盒子的任意一个)

②S(n,m)=n个不同球,放到m个不同盒子,不能有空盒子=m^n−(一定有空盒子的)

n个不同球,放到m个不同盒子至少有一个空盒子C_{m}^{1}*(m-1)^n(先选一个必空的,后面的可能空),

这样计算是有重复(比如先1后2也是空,先2后1也是空),

这种计算至少有一个空盒子的方法,会使恰好有一个空盒子的方案被计算一次,恰好有两个空盒子的方案被计算两次,恰好有三个空盒子的方案被计算三次,

于是就和三个圆容斥原理的那个过程相同了,第一次求的是三个圆的面积之和,此时就需要用到容斥原理。

无空盒子的方案为m^n-\sum_{i=1}^m (-1)^{i+1} C(m,k)*(m-i)^n

不同盒子转化为相同盒子,除掉顺序m!即可,

S(n,m)={\frac 1 {m!}}\sum_{k=0}^m (-1)^k C(m,k)(m-k)^n

    ll ans=0,sg=1;
    for(int i=m;i>=1;--i){
        ans=(ans+modpow(i,n)*C(m,i)%mod)%mod;//m个里选i个必放 再在这i个里面随便放n个球
        sg*=-1;
    }
    ans=ans*finv[m]%mod;

也可以理解为,

第一步加至少有零个空盒子的方案数,C_{m}^{0}*m^n

第二步减至少有一个空盒子的方案数,C_{m}^{1}*(m-1)^n

以此类推,

如果难以记住符号正负,

可以理解为第一步一定是所有方案,+

会算多,后续再减即可

相关公式:x^k= \sum_{i=0}^{k}{x \choose i} i!\begin{Bmatrix} k \\ i \end{Bmatrix}

k个不同求放在x个不同盒子里,每个球有x种选择,即x^k

或是枚举有多少非空盒子C(n,i),对于盒子方案数为i!∗S(k,i)。

两种理解角度,故有式子x^k= \sum_{i=0}^{k}{x \choose i} i!\begin{Bmatrix} k \\ i \end{Bmatrix}成立

应用:Educational Codeforces Round 86 (Rated for Div. 2) E. Placing Rooks

感觉是用容斥,推导了一遍,第二类斯特林数

④欧拉数

⑤伯努利数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code92007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值