题目链接

http://poj.org/problem?id=1430

题解

qaq写了道水题……

在模\(2\)意义下重写一下第二类Stirling数的递推式: \[S(n,m)=S(n-1,m-1)+(S(n-1,m)\ \text{and}\ m)\]
令\(S'(n,m)=S(n+m,m)\), 那么递推式变成了\(S'(n,m)=S'(n,m-1)+(S'(n-1,m)\ \text{and}\ m)\)
也就相当于从\((0,0)\)走到\((n,m)\)的NE Lattice Path数目,且当纵坐标为偶数时只能往上走不能往右走
那这个只能往上走不能往右走就相当于把这一行删掉了(因为对方案没有任何影响),于是保留下来的行只有\([\frac{m-1}{2}]\)个
那么就是从\((0,0)\)走到\((n,[\frac{m-1}{2}])\)的NE Lattice Path条数,直接Lucas定理组合数计算即可
\(m=0\)要特判
时间复杂度\(O(T(\log n+\log m))\).

代码

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cassert>
#include<iostream>
#define llong long long
using namespace std;inline int read()
{int x=0; bool f=1; char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=0;for(; isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(c^'0');if(f) return x;return -x;
}int comb0(int x,int y) {return x<y?0:1;}
int comb(int x,int y)
{if(x<2&&y<2) {return comb0(x,y);}return comb((x>>1),(y>>1))*comb0((x&1),(y&1));
}int main()
{int T; scanf("%d",&T);while(T--){int n,m; scanf("%d%d",&n,&m);if(m==0) {printf("0\n"); continue;}n -= m; m = (m-1)>>1;printf("%d\n",comb(n+m,m));}return 0;
}

POJ 1430 Binary Stirling Numbers (第二类斯特林数、组合计数)相关推荐

  1. [学习笔记]第一类/第二类斯特林数

    前置知识 · 组合数学基础 · 容斥原理 · 生成函数 · FFT/NTT · 多项式exp,多项式ln,多项式快速幂,多项式平移 一些规定 · 下降幂 xn‾=∏i=1n(x−i+1)x^{\und ...

  2. 组合基础2 第一类斯特林数 第二类斯特林数 基础部分

    记xn‾=x(x+1)(x+2)⋯(x+n−1)x^{\overline{n}}=x(x+1)(x+2)\cdots(x+n-1)xn=x(x+1)(x+2)⋯(x+n−1),xn‾=x(x−1)(x ...

  3. 【组合数学】第一类,第二类斯特林数(Stirling),Bell数

    第一类斯特林数 定理: 第一类斯特林数S1(p,k)计数的是把p个对象排成k个非空循环排列的方法数. 证明:把上述定理叙述中的循环排列叫做圆圈 递推公式: S1(p,p)=1(p>=0),有p个 ...

  4. 第二类Stirling数(第二类斯特林数)

    第二类Stirling数(第二类斯特林数) 定义 第二类Stirling数表示把nnn个不同的数划分为mmm个集合的方案数,要求不能为空集,写作S(n,m)S(n,m)S(n,m). 和第一类Stir ...

  5. 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘

    题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...

  6. 【组合数学】第二类斯特林数

    一.定义 第二类Stirling数即:,又可记为[与第一类的表示有大小写的区别].其表示将n个不同的元素分成m个集合的方案数. 二.理解关键词句 1.集合的一个拆分(表示将n个不同的元素拆分成m个集合 ...

  7. 合理放球(递推之第二类斯特林数 C++)

    合理放球 总时间限制: 1000ms 内存限制: 65536kB 描述 n个各不相同球放入m个相同的盒子里,球全部放完后,要求最后没有空盒!求不同的放法总数. 输入 一行两个数n和m n表示球数,m表 ...

  8. BZOJ 2159 「国家集训队」Crash 的文明世界(第二类斯特林数,换根DP)【BZOJ计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2159 是 hydro 的 BZOJ ...

  9. 【BZOJ 4555】[Tjoi2016Heoi2016]求和 多项式求逆/NTT+第二类斯特林数

    出处0.0 用到第二类斯特林数的性质,做法好像很多,我打的是直接ntt,由第二类斯特林数的容斥公式可以推出,我们可以对于每一个i,来一次ntt求出他与所有j组成的第二类斯特林数的值,这个时候我们是O( ...

最新文章

  1. 开发日记-20190622 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  2. mysql utf8mb4 java_mysql中utf8和utf8mb4区别
  3. 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
  4. html写登录框中的字,一个登录界面的PS设计和HTML/CSS实现
  5. 字符串切割(split())
  6. strhcr函数的使用简单示例
  7. 数据库学习(MySQL):JDBC的简单增删改查实现
  8. Android之从网络上获取图片的两种方式讲解:thread+handle和AsyncTask方式
  9. 【脑筋急转弯】—— 谁是诚实人?
  10. 智鼎逻辑推理题及答案_2020常见校招笔试题型解析
  11. 刘潇翔:基于OpenHarmony的仿生四足狗开发分享
  12. vue2.0中的退出登录问题
  13. 扫地机器人返充原理_全自动智能扫地机器人的工作原理分析
  14. 沪指暴跌200点 两市超过四分之一股票跌停
  15. 嵌入式开发板更换开机LOGO
  16. TokenInsight 全新官网上线 用数据赋能区块链价值投资
  17. 基于android的校园新闻app,基于Android的校园新闻app开发第三稿李威案例.doc
  18. 迅捷思维导图怎么画出来
  19. EBS JVM 内存优化攻略
  20. dataTable报错:DataTables warning: table id=example - Requested unknown parameter 'null' for row 1

热门文章

  1. 图像凸性检测函数convexityDefects在Python2.7下使用opencv3.0的问题
  2. 基于贝叶斯决策理论的分类器
  3. Visual Studio 2008 当页面进行调试时,IE8浏览器显示的是空白页面?
  4. 【CyberSecurityLearning 70】DC系列之DC-1渗透测试(Drupal)
  5. 不同外置模拟器用Android Studio连接指令
  6. 3D数学基础:图形与游戏开发---随笔五
  7. hdu1272(简单并查集)
  8. 大数运算(1)——大数储存
  9. 【译】A gentle introduction to self-sovereign identity
  10. 基于 ELK Stack 和 Spark Streaming 的日志处理平台设计与实现