hdu2643&&hdu2512——斯特林数&&贝尔数
hdu2643
题意:$n$ 个人的排名情况数($n \leq 100$)
分析:考虑 $n$ 个有区别的球放到 $m$ 个有区别的盒子里、无空盒的方案数为 $m!\cdot S(n, m)$。
这题中 $m$ 可取 $1 \sim n$(可能排名相同),累加即可。
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const int maxn = +;
const int mod = ; int Sti[maxn][maxn], fact[maxn]; //第二类司特林数、贝尔数 void init()
{
fact[] = ;
for(int i = ;i < maxn;i++) fact[i] = fact[i-] * i % mod; Sti[][] = ;
for(int i = ;i < maxn;i++)
for(int j = ;j <= i;j++)
Sti[i][j] = (Sti[i-][j-] + 1LL * j * Sti[i-][j]) % mod; } int main()
{
init(); int T;
scanf("%d", &T);
while(T--)
{
int n;
scanf("%d", &n);
int ans = ;
for(int i = ;i <= n;i++) ans = (ans + 1LL * Sti[n][i] * fact[i]) % mod;
printf("%d\n", ans);
}
return ;
}
hdu2512
题意:相当于求 $n$ 个元素的集合划分数($1 \leq n \leq 2000$)
分析:即求第 $n$ 个贝尔数,$n$ 较小,直接用 $n^2$ 的暴力
#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const int maxn = +;
const int mod = ; int Sti[maxn][maxn], bell[maxn]; //第二类司特林数、贝尔数 void Stirling2()
{
Sti[][] = ;
for(int i = ;i < maxn;i++)
for(int j = ;j <= i;j++)
Sti[i][j] = (Sti[i-][j-] + 1LL * j * Sti[i-][j]) % mod;
} void init()
{
Stirling2(); bell[] = ;
for(int i = ;i < maxn;i++)
for(int j = ;j <= i;j++)
bell[i] = (bell[i] + Sti[i][j]) % mod; } int main()
{
init(); int T;
scanf("%d", &T);
while(T--)
{
int x;
scanf("%d", &x);
printf("%d\n", bell[x]);
}
return ;
}
参考链接:https://www.cnblogs.com/xiaoxian1369/archive/2011/08/26/2154783.html
hdu2643&&hdu2512——斯特林数&&贝尔数的更多相关文章
- HDU 2512 一卡通大冒险(第二类斯特林数+贝尔数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 题目大意:因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部 ...
- hdu4767 Bell——求第n项贝尔数
题意 设第 $n$ 个Bell数为 $B_n$,求 $B_n \ mod \ 95041567$.($1 \leq n \leq 2^{31}$) 分析 贝尔数的概念和性质,维基百科上有,这里 ...
- 贝尔数(来自维基百科)& Stirling数
贝尔数 贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列): Bell Number Bn是基数为n的集合 ...
- bzoj 3501 PA2008 Cliquers Strike Back——贝尔数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角形 p^2 地预处理 p 以内的贝尔数.可以模(mod-1)(它是每个分解下 ...
- bzoj 3501 PA2008 Cliquers Strike Back —— 贝尔数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角预处理贝尔数,拆模数并在 \( p \) 进制下使用公式,因为这样每次角标增 ...
- 贝尔数--Codeforces908E. New Year and Entity Enumeration
给n<=50个长度m<=1000的二进制数,记他们为集合T,求满足下面条件的集合S数:令$M=2^m-1$,1.$a \epsilon S \Rightarrow a \ \ xor \ ...
- 斯特灵数 (Stirling数)
@维基百科 在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的. 第一类 s(4,2)=11 第一类Stirling数是有正负的,其绝对值是个元素的项目分 ...
- 卡特兰数 Catalan数 ( ACM 数论 组合 )
卡特兰数 Catalan数 ( ACM 数论 组合 ) Posted on 2010-08-07 21:51 MiYu 阅读(13170) 评论(1) 编辑 收藏 引用 所属分类: ACM ( 数论 ...
- Bell(hdu4767+矩阵+中国剩余定理+bell数+Stirling数+欧几里德)
Bell Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
随机推荐
- Docker容器安装配置SQLServer服务(Linux)
一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...
- JDK本地内存追踪NMT
通常情况下, JVM占用的内存不仅仅是-Xmx, -Xms等指定的大小, 因为JVM也是一个应用, 它需要额外的空间去完成它的工作, 除了堆外, JVM会分配内存的地方包括以下这些: Metaspac ...
- Codeforces Round #249 (Div. 2) C. Cardiogram
C. Cardiogram time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- Spark学习(1) Spark入门
什么事spark Spark是一种快速.通用.可扩展的大数据计算引擎.项目是用Scala进行编写,基于内存计算的 包括交互式查询和流处理 spark内置项目 Spark SQL:是 Spark 用来操 ...
- python学习-36 文件处理b模式
文件处理b模式 1.以2进制的方式读取 f = open('test.txt','rb') #以b模式就不能指定encoding data = f.read() print(data) f.close ...
- Java Web报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
问题描述: 我们在用Eclipse进行Java web开发时,可能会出现这样的错误:The superclass javax.servlet.http.HttpServlet was not foun ...
- 【Rust】使用cargo创建项目及cargo源的替换
---------------------------------参考文档------------------------------- https://rustlang-cn.org/office/ ...
- js提取135编辑器相同的css
135编辑器导入的内容,有重复的很多css,导致加载很慢,只能去掉 function remove135FormatContent(content){ if(!content) return ''; ...
- C# 快捷键(总结)
C# 展开和折叠代码的快捷键 VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + ...
- 深度剖析java中JDK动态代理机制
https://www.jb51.net/article/110342.htm 本篇文章主要介绍了深度剖析java中JDK动态代理机制 ,动态代理避免了开发人员编写各个繁锁的静态代理类,只需简单地指定 ...