斯特灵数stirling

2024-01-26 12:08
文章标签 stirling 斯特灵

本文主要是介绍斯特灵数stirling,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Count the Buildings

不管是从左边看还是从右边看,视线总是会被中间最高的给挡住

所以我们把左边和右边分组来看。

对于某一边,我们确定出能够看见的楼房,那么不能够看见的楼房就可以任意排列

我们把能看见的楼房,与下一个能看到的楼房(不包括下一个楼房)之间的楼看为一组

可以考虑现将最高的拿出来,那么可以考虑左边需要有F-1个房子成递增关系,那么可以将左边的房子分成F-1个组(环),右边有B-1个房子成递减关系,也是如此,这就让人YY到了第一类Stirling数,第一类Stirling数s(p,k)是将将p个物体排成k个非空循环排列的方法数(k个排列是有先后顺序的)。可以想到,每一组都是有顺序的(与环等价)。除此之外,还要计算组合数,就是在(F-1+B-1)组中取出F-1个到左边,乘上即是答案。

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;
const int maxn = 2000+10;
const int MOD = 1000000007;
int n,f,b;
ll s[maxn][maxn];
ll c[maxn][maxn];
void init(){c[0][0] = 1;s[0][0] = 1;for(int i = 1; i < maxn; i++){c[i][0] = c[i][i] = 1;s[i][0] = 0;s[i][i] = 1;for(int j = 1; j < i; j++){c[i][j] = (c[i-1][j] + c[i-1][j-1])%MOD; s[i][j] = ((i-1)*s[i-1][j]+s[i-1][j-1])%MOD; } }
}
int main(){int ncase;init();cin >> ncase;while(ncase--){scanf("%d%d%d",&n,&f,&b); if(f+b-2>n){puts("0");}else {ll ans = (c[f+b-2][f-1]*s[n-1][b+f-2])%MOD; printf("%I64d\n",ans);}}return 0;
}

这篇关于斯特灵数stirling的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646755

相关文章

组合数学 —— 斯特林数(Stirling)

【第一类斯特林数】 1.定理 第一类斯特林数 S1(n,m) 表示的是将 n 个不同元素构成 m 个圆排列的数目。 2.递推式 设人被标上1,2,.....p,则将这 p 个人排成 m 个圆有两种情况: 在一个圆圈里只有标号为 p 的人自己,排法有 S1(n-1,m-1) 个。p 至少和另一个人在一个圆圈里。 这些排法通过把 1,2....n-1 排成 m 个圆再把 n 放在 1,2.

UVA 10844 - Bloques (第二类斯特灵数)

UVA 10844 - Bloques 题目链接 题意:给定n个数字,问这n个数字能分成子集分成有几种分法 思路:一开始先想了个状态,dp[i][j]表示放i个数字,分成j个集合的方案,那么转移为,从dp[i - 1][j - 1]在多一个集合,和从dp[i - 1][j]有j个位置放,那么转移方程为dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j] *

云端部署Stirling PDF:构建个人App的API调用指南(附Python源码)

今天发现一个Github的开源项目,Stirling PDF,项目地址如下:https://gitcode.com/Stirling-Tools/Stirling-PDFhttps://gitcode.com/Stirling-Tools/Stirling-PDF?utm_source=artical_gitcode目前CSDN上已经有好几个up主都介绍了这个项目,但是没有介绍如何用API的方式去

Vision_MATH_球盒问题+第二类Stirling数

///定义: /*     排列组合解决球盒的八大问题,其中用到排列组合公式和第二类斯特林公式 */ ///代码: /***name:第二类斯特林数(第二类Stirling数)**function:解决求不同盒同等问题**公式: S(r, c) = S(r-1,c-1) + c * S(r-1, c)*/#include <iostream>#inclu

使用docker安装本地pdf工具集合Stirling-PDF

平时工作中需要处理pdf,市面上的很多工具都需要充会员才能使用,偶然发现了一个可私有化部署且易于使用的PDF在线工具,使用docker部署,使用起来非常方便,而且功能齐全。 这里是官网: https://pdf.errui.cc/ 如果想本地部署 拉取镜像 docker pull frooodle/s-pdf:latest 运行Stirling-PDF容器 docker run

POJ 1430 Binary Stirling Numbers (斯特林数)

题意:给你n,k,求S(n,k) mod 2。 题解:没什么好说的,知道公式就好解决。C(z,w) = z! / [(w!) * (z-w)!],要判断奇偶性只需要统计一下分子分母的所含的因子2的个数。 #include<cstdio>#define lint __int64lint getTwo ( lint x ){lint cnt = 0, bit = 2;wh

Stirling PDF:免费PDF开源编辑工具

Git地址:https://github.com/Stirling-Tools/Stirling-PDF        Stirling-PDF是一个基于spring-boot开发的开源项目,旨在提供一个功能强大的基于Docker的本地托管PDF操作工具。它使您能够对PDF文件进行多种操作,包括拆分、合并、转换、重新组织、添加图片、旋转、压缩等。该本地托管应用最初由ChatGPT完全开发,

贝尔数,两类斯特灵数的计算公式

第一类斯特灵数:含正负值,其绝对值是包含n个元素的集合分作k个环排列的方法数目。 递推公式   s(n,0)=0,s(1,1)=1,s(n,k)=s(n-1,k-1)+(n-1)*s(n-1,k) 第二类斯特灵数:把包含n个元素的集合划分为正好k个非空子集的方法的数目。 递推公式   s(n,k)=s(n

中国社会科学院大学-英国斯特灵大学中外合作办学创新与领导力博士DMAN项目

中国社会科学院大学-英国斯特灵大学中外合作办学创新与领导力博士DMAN项目 中国社会科学院大学-英国斯特灵大学创新与领导力博士DMAN项目是中国社会科学院大学第一个博士层次的中外合作办学项目,于2020年3月正式获得教育部批准办学,批准书编号:OE11UK1N20192019N。创新与领导力博士项目是结合理论框架及其在现实生活中的实际应用的专业博士项目,依托中国社科院及斯特灵大学丰富的学术资源,

中国社科院与英国斯特灵大学——认证与不认证都颁发什么证书

随着在职研究生改革的不断深入,越来越多的在职人士报考在职研究生,在职博士,提升自己的学历和能力。中外合作办学博士是在职博士报考方式之一,是由国内的院校和国外院校合作开办的在职博士教育形式,分可认证和不可认证两种,那么接下来小编与中国社科院与英国斯特灵大学创新领导力博士项目与大家一起了解中外合作办学博士都能颁发什么证书。 不可认证的合作办学项目,最终只能拿到国外院校的博士学位证书,不能在教育部留学