counting the buildings - 第一类斯特灵数
2017-08-10 21:10:08
writer:pprp
//TLE
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm> using namespace std; const int INF = 0x3f3f3f3f;
typedef long long ll;
const int maxn = ; ll dp[maxn][maxn]; const int mod = 1e9 + ; void S1()
{
for(int i = ; i <= ; i++)
{
dp[i][] = ;
dp[i][i] = ;
for(int j = ; j < i ; j++)
dp[i][j] = (i - ) * dp[i-][j] + dp[i-][j-];
}
} //a^b%m 快速幂
int quick_power_mod(int a, int b, int m)
{
int result = ;
int base = a;
while(b > )
{
if(b& == )//如果b是奇数
{
result = (result * base) % m;
}
base = (base * base)%m;
b>>=;
}
return result;
} //组合数取模 C(a,b)%p
ll composition(ll a, ll b, int p)
{
if(a < b)
return ;
if(a == b)
return ;
if(b > a - b) b = a - b; int ans = , ca = , cb = ;
for(ll i = ; i < b; i++)
{
ca = (ca * (a - i))%p;
cb = (cb * (b - i))%p;
} ans = (ca * quick_power_mod(cb,p - , p)) % p;
return ans;
} ll lucas(ll n, ll m, ll p)
{
ll ans = ;
while(n && m && ans)
{
ans = (ans * composition(n%p, m%p, p))%p;
n /= p;
m /= p;
}
return ans;
} int main()
{
S1();
int T;
cin >> T;
int N, F, B; while(T--)
{
cin >> N >> F >> B;
cout << dp[N-][F+B-]*composition(F+B-,F-,mod) <<endl;
}
return ;
}
标解:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm> using namespace std; const int INF = 0x3f3f3f3f;
typedef long long ll;
const int maxn = ; ll dps[maxn][maxn];
ll dpc[maxn][maxn]; const ll mod = 1e9 + ; void init()
{
for(int i = ; i < maxn ; i++)
{
dpc[i][] = dpc[i][i] = dps[i][i] = ;
for(int j = ; j < i ; j++)
{
dpc[i][j] = (dpc[i-][j-]+dpc[i-][j])%mod;
dps[i][j] = ((i-)*dps[i-][j])%mod + dps[i-][j-]%mod;
}
}
} int main()
{
int T;
cin >> T;
long long N, F, B;
init(); while(T--)
{
cin >> N >> F >> B;
cout << dps[N-][F+B-]*dpc[F+B-][F-]%mod <<endl;
}
return ;
}
标解中组合数是用杨辉三角求解的
杨辉三角dp法
dp[i][j]=dp[i-1][j-1]+dp[i-1][j]
O(n^2)~O(1)
counting the buildings - 第一类斯特灵数的更多相关文章
- HDU 3625 Examining the Rooms【第一类斯特灵数】
<题目链接> <转载于 >>> > 题目大意:有n个锁着的房间和对应n扇门的n把钥匙,每个房间内有一把钥匙.你可以破坏一扇门,取出其中的钥匙,然后用取出钥匙打 ...
- Examining the Rooms - 第一类斯特灵数
---恢复内容开始--- 2017-08-10 20:32:37 writer:pprp 题意如下: Recently in Teddy's hometown there is a competiti ...
- cf932E. Team Work(第二类斯特灵数 组合数)
题意 题目链接 Sol 这篇题解写的非常详细 首先要知道第二类斯特灵数的一个性质 \[m^n = \sum_{i = 0}^m C_{n}^i S(n, i) i!\] 证明可以考虑组合意义:\(m^ ...
- 斯特灵数 (Stirling数)
@维基百科 在组合数学,Stirling数可指两类数,都是由18世纪数学家James Stirling提出的. 第一类 s(4,2)=11 第一类Stirling数是有正负的,其绝对值是个元素的项目分 ...
- Examining the Rooms(dp,斯特灵数)
Examining the Rooms Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Rank - 第二类斯特灵数
2017-08-10 20:32:37 writer:pprp 题意如下: Recently in Teddy's hometown there is a competition named &quo ...
- 斯特灵(Stirling)数
http://zh.wikipedia.org/wiki/%E6%96%AF%E7%89%B9%E7%81%B5%E6%95%B0 第一类:n个元素分成k个非空循环排列(环)的方法总数 递推式:s(n ...
- 7-n!的位数(斯特灵公式)
http://acm.hdu.edu.cn/showproblem.php?pid=1018 Big NumberTime Limit: 2000/1000 MS (Java/Others) Memo ...
- 弗罗贝尼乌斯範数(Frobenius norm)
弗罗贝尼乌斯範数 对 p = 2,这称为弗罗贝尼乌斯範数(Frobenius norm)或希尔伯特-施密特範数( Hilbert–Schmidt norm),不过后面这个术语通常只用于希尔伯特空间.这 ...
随机推荐
- 调试maven源代码
下载源代码,导入idea 运行MavenCli ,设置vm参数 -Dclassworlds.conf=/Users/fsq/Downloads/apache-maven-3.6.2.0/bin/m2. ...
- Spark2.0机器学习系列之5:随机森林
概述 随机森林是决策树的组合算法,基础是决策树,关于决策树和Spark2.0中的代码设计可以参考本人另外一篇博客: http://www.cnblogs.com/itboys/p/8312894.ht ...
- ckeditor的使用实例
1.编辑器下载: https://pan.baidu.com/s/1ex3zCVuQsMz8opk75zadPw 2.静态页面中加载 ckeditor.js <script src=" ...
- Java中的并发编程集合使用
一.熟悉Java自带的并发编程集合 在java.util.concurrent包里有很多并发编程的常用工具类. package com.ietree.basicskill.mutilthread.co ...
- JavaScript和jQuery的学习
还有12天就要回学校了,我的假期计划还能实现吗?在这12天里,需要把JavaScript和jQuery学完.我知道这两个技术对于前端网页开发非常重要.前期把HTML和CSS学完了,学的不是特别深,只是 ...
- Python(面向对象5——高级)
面向对象进阶 一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 class Fo ...
- Oracle DDL+DML+DCL实例
SQL语言共分为四大类: 数据查询语言DQL: 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块. 数据操纵语言DML: DML是“数据操纵语言”( Data ...
- POJ - 2699 The Maximum Number of Strong Kings (最大流+枚举)
题意:有n(n<=10)个选手,两两之间打比赛,共有n*(n-1)/2场比赛,赢一场得1分.给出每个人最后的得分.求有多少个定义如下的strong king:赢了所有得分比自己高的人或本身就是分 ...
- 【1】Kali Linux的安装及配置
爱生活就得够GEEK. ---------------------------------------------------------------完美的分割线------------------- ...
- maven 介绍(二)
本文内容主要摘自:http://www.konghao.org/index 内部视频 三.仓库 仓库:本地仓库:远程仓库:私有仓库(nexus) 1. nexus 的安装: 1). 下载并且解压缩 2 ...