先和第二类做一个对比

第一类Stirling数是有正负的,其绝对值是包含n个元素的集合分作k个环排列的方法数目。
递推公式为, S(n,0) = 0, S(1,1) = 1.   S(n+1,k) = S(n,k-1) + nS(n,k)。 
边界条件: S(0 , 0) = 1 S(p , 0) = 0 p>=1 S(p , p) =1 p>=0 
一些性质: S(p ,1) = 1 p>=1 S(p, 2) = 2^(p-1)– 1 p>=2   

第二类Stirling数是把包含n个元素的集合划分为正好k个非空子集的方法的数目。   
递推公式为:   S(n,k)=0; (n<k||k=0)   S(n,n) = S(n,1) = 1,   
S(n,k) = S(n-1,k-1) + kS(n-1,k).
考虑第p个物品,p可以单独构成一个非空集合,此时前p-1个物品构成k-1个非空的
不可辨别的集合,方法数为S(p-1,k-1);
也可以前p-1种物品构成k个非空的不可辨别的集合,
第p个物品放入任意一个中,这样有k*S(p-1,k)种方法。

然后说下这道题目,题目说每个房间都锁死了,切钥匙都在房间里面。我们可以任意的强行开一个门(除了1号门),然后拿到钥匙去开其他门,重复这个操作,如果开不了门,我们在强行开一个,依次类推。题目要求最多只允许强开k扇门的时候,有多大的几率把所有的门都打开。模拟一下发现和第一类斯特林数差不多,就是要特殊处理一下第一个门不能强开的情况。

ac代码:

#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
ll stir[][];
ll jie[]; void init()
{
stir[][]=;
stir[][]=;
for(int i=;i<=;i++)
for(int j=;j<=i;j++)
stir[i][j]=stir[i-][j-]+(i-)*stir[i-][j];
jie[]=;
for(int i=;i<=;i++)jie[i]=jie[i-]*i;
} int main()
{
int T;
scanf("%d",&T);
init();
while(T--)
{
int n,k;
scanf("%d%d",&n,&k);
ll ans=;
for(int i=;i<=k;i++)
ans+=stir[n][i]-stir[n-][i-];
printf("%.4lf\n",ans*1.0/jie[n]);
}
return ;
}

hdu 3265 第一类斯特林数的更多相关文章

  1. HDU 3625 第一类斯特林数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3625 题意: n个房间,房间里面放着钥匙,允许破门而入k个,拿到房间里面的钥匙后可以打开对应的门,但是 ...

  2. hdu 4372 第一类斯特林数

    #include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...

  3. 【HDU 4372】 Count the Buildings (第一类斯特林数)

    Count the Buildings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Othe ...

  4. hdu 4372 Count the Buildings —— 思路+第一类斯特林数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4372 首先,最高的会被看见: 然后考虑剩下 \( x+y-2 \) 个被看见的,每个带了一群被它挡住的楼, ...

  5. hdu 3625 Examining the Rooms —— 第一类斯特林数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3625 学习斯特林数:https://blog.csdn.net/qq_33229466/article/d ...

  6. [HDU 3625]Examining the Rooms (第一类斯特林数)

    [HDU 3625]Examining the Rooms (第一类斯特林数) 题面 有n个房间,每个房间有一个钥匙,钥匙等概率的出现在n个房间内,每个房间中只会出现且仅出现一个钥匙.你能炸开门k次, ...

  7. HDU 4372 Count the Buildings——第一类斯特林数

    题目大意:n幢楼,从左边能看见f幢楼,右边能看见b幢楼 楼高是1~n的排列. 问楼的可能情况 把握看到楼的本质! 最高的一定能看见! 计数问题要向组合数学或者dp靠拢.但是这个题询问又很多,难以dp ...

  8. 【组合数学:第一类斯特林数】【HDU3625】Examining the Rooms

    Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  9. 如何快速求解第一类斯特林数--nlog^2n + nlogn

    目录 参考资料 前言 暴力 nlog^2n的做法 nlogn的做法 代码 参考资料 百度百科 斯特林数 学习笔记-by zhouzhendong 前言 首先是因为这道题,才去研究了这个玩意:[2019 ...

随机推荐

  1. Python有堆栈/堆,如何管理内存?

    Python有堆栈/堆,如何管理内存? - 代码日志 https://codeday.me/bug/20171016/86264.html

  2. Faster async functions and promises

    https://v8.dev/blog/fast-async async function computeAnswer() { return 42;}undefinedconst p = comput ...

  3. SQL Server 将查询结果集以XML形式展现 for xml path

    for xml path,其实它就是将查询结果集以XML形式展现 双击打开

  4. [转]WebMercator与经纬度互转

    //经纬度转Web墨卡托 Vector3 lonLat2WebMercator(Vector3 lonLat) { Vector3 mercator; ; + lonLat.y)*)) / (); y ...

  5. flutter中的网络请求和下拉刷新上拉加载,toast的案例

    添加依赖 pull_to_refresh: ^1.5.6 dio: ^2.1.0 fluttertoast: ^3.0.1 DioUtil import 'package:dio/dio.dart'; ...

  6. 一个Redis实例适合存储不同应用程序的数据吗?

    Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redis实例提供了多个用来存储数据 ...

  7. ES6深入浅出-6 ES 6 模块-2.babel webpack parcel

    https://babeljs.io/ 复制到命令行执行 提示一个警告.缺少package.json这个文件 npm init -t ls 然后看到了生成了package.json这个文件. 然后再去 ...

  8. win10更新之后vmware使用失败

    1.现象 2.解决:把所有更新卸载

  9. python 调用java脚本的加密(没试过,先记录在此)

    http://lemfix.com/topics/344 前言 自动化测试应用越来越多了,尤其是接口自动化测试. 在接口测试数据传递方面,很多公司都会选择对请求数据进行加密处理. 而目前为主,大部分公 ...

  10. Redis的特性及运用

    Redis特性 一个产品的使用场景肯定是需要根据产品的特性,先列举一下Redis的特点: 读写性能优异 持久化 数据类型丰富 单线程 数据自动过期 发布订阅 分布式 这里我们通过几个场景,不同维度说下 ...