组合数学入门—TwelveFold Way

你需要解决\(12\)个组合计数问题。

\(n\)个有标号/无标号的球分给\(m\)个有标号/无标号的盒子

盒子有三种限制:

A、无限制

B、每个盒子至少有一个球

C、每个盒子至多有一个球

共有\(2\times2\times3=12\)种问题:

为了方便 将有标号记为L(labelled) 无标号记为U(unlabelled)

那么一个问题可以用缩写代替,如ULA表示\(n\)个无标号的球分给\(m\)个有标号的盒子,一共有多少种方案。

现在你的任务是,给定问题的缩写和\(n,m\),求方案数对\(998244353\)取模后的值。

LLA

这个很明显答案是\(m^n\),每一个球有\(m\)种选择

LLB

发现这个条件不好满足,考虑容斥,每次强制枚举\(i\)个盒子里面没有球
\[
ans = \sum_{i = 0}^m\binom{n}{i}(m - i)^n
\]

LLC

我们发现,因为要求球全部放入盒子,所以当\(n > m\)肯定无解

否则答案就是
\[
\binom{m}{n}\times n!
\]
看看那几个盒子里面有球,并且因为球是不同的,所以要再乘上排列数

LUB

发现LUB和LLB的区别就是其实就是\(\{1,2,3\},\{4,5\}\)和\(\{4,5\}\),\(\{1,2,3\}\)看做一种

那么我们直接把LLB的答案除以\(m!\)即可

这就引出了我们要介绍的东西,第二类斯特林数

第二类斯特林数,记为\(S\),\(S_n^m\)表示把\(n\)个有标号的球放到\(m\)个无标号的盒子里面的方案数

我们可以比较简单的理解第二类斯特林数的递推公式
\[
S_{n}^m = S_{n - 1}^{m - 1}+ m\times S_{n - 1}^m
\]
每次新开一个盒子放\(i\)或者是放入之前的任何一个集合之中

LUA

我们既然知道了LLB的答案,直接枚举多少个盒子放了球
\[
ans = \sum_{i = 1}^mS_{n}^i
\]
到此为止我们可以发现一个奇妙的性质A和B是知一推一的,有无标号仅仅通过乘组合数推出来

LUC

这就是比较水的了,直接判断能否放下,放得下就是\(1\)

ULB

经典插板法的模型,ULB也可以在做是这样一个方程的正整数解的个数
\[
x_1+x_2+x_3+\dots +x_m = n
\]
那么我们看做这样\(n\)的球插入\(m - 1\)的版子.分割成\(m\)部分的方案数

所以方案数就是
\[
\binom{n - 1}{m - 1}
\]

ULA

我们继续上面的方程

设\(y_i = x_i+ 1\)

也就是我们现在要解决这个方程的正整数解的个数
\[
y_1+y_2+\dots+y_m = n+m
\]
同理,可以知道是
\[
\binom{n + m - 1}{m - 1}
\]
每一组\(y\)都对应着唯一一组\(x\)(因为\(x\)和\(y\)的关系是确定的)

ULC

首先,\(n > m\)肯定无解,接下来只需要考虑\(n\le m\)

否则答案就是\(\binom{m}{n}\)

UUC

同LUC

UUB

这个不能通过ULB除以\(m!\)得到

因为ULB中我们尽管盒子不同,但是球是相同的,所以我们会把\(\{2,3,3\}\)和\(\{2,3,3\}\)看做同一种方案,所以直接除以\(m!\)的前提是上面的例子被看做不同方案,否则就没有排列一说

那我们设\(P_{i,j}\)表示\(i\)个无标号的球分到\(j\)个有标号的盒子里的方案数

为了保证不会重复计数,我们强制盒子的球数目不增

转移要么把新球新开一个盒子,要么在前面所有盒子都放一个球
\[
P_{i.j} = P_{i - 1,j - 1} + P_{i - j,j}
\]
转移边界有\(P_{0,0} = 1\)

这其实就是划分数

UUA

首先,我们可以采用老套路,暴力枚举有多少个盒子中放球
\[
ans = \sum_{i = 1}^m P_n^i
\]
另外类似于ULA的思路,我们发现答案其实是\(P_{n + m}^m\)

组合数学入门—TwelveFold Way的更多相关文章

  1. [BZOJ2111]:[ZJOI2010]Perm 排列计数(组合数学)

    题目传送门 题目描述 称一个1,2,...,N的排列${P}_{1}$,${P}_{2}$,...,${P}_{N}$是Magic的,当且仅当2≤i≤N时,${P}_{i}$>${P}_{\fr ...

  2. [BZOJ2729]:[HNOI2012]排队(组合数学)

    题目传送门 题目描述 某中学有n名男同学,m名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) ...

  3. P5689 多叉堆

    写在前面 OI 生涯中 AC 的首道组合数学应用题. 开题 5min 发现规律,写了半下午代码,调了两天,然而甚至没过样例,心态崩了.几天之后重新写了一份代码才 AC. 虽然思维难度不大,但毕竟是联赛 ...

  4. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  5. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  6. ACM入门步骤(一)

    一般的入门顺序: 0. C语言的基本语法(或者直接开C++也行,当一个java选手可能会更受欢迎,并且以后工作好找,但是难度有点大),[参考书籍:刘汝佳的<算法竞赛入门经典>,C++入门可 ...

  7. ACM基础算法入门及题目列表

    对于刚进入大学的计算机类同学来说,算法与程序设计竞赛算是不错的选择,因为我们每天都在解决问题,锻炼着解决问题的能力. 这里以TZOJ题目为例,如果为其他平台题目我会标注出来,同时我的主页也欢迎大家去访 ...

  8. ACM入门指南

    本文已经转移到了:http://harryguo.me/2015/11/03/ACM-%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/ 什么是ACM? 想必打开这篇博客的人已 ...

  9. 数位dp总结 之 从入门到模板

    转发自WUST_WenHao巨巨的博客 基础篇 数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数.所谓数位dp,字面意思就是在数位上进行dp咯.数位还算是比较好听 ...

随机推荐

  1. Servlet小结(转载)

    http://www.iteye.com/topic/766418 1 .首先,什么是Servlet?        Servlet是一个Java编写的程序,此程序是在服务器端运行的,是按照Servl ...

  2. git reset三种模式

    reset三种模式区别和使用场景 区别: --hard:重置位置的同时,直接将 working Tree工作目录. index 暂存区及 repository 都重置成目标Reset节点的內容,所以效 ...

  3. PHP汉字验证码

    转自:http://www.blhere.com/1167.html 12345678910111213141516171819202122232425262728293031323334353637 ...

  4. Hdu 1729 Nim博弈

    点击打开题目链接 之前没做过这题,因为学弟问到我如果来求该题的sg值,才做了这题. 首先, 是多堆Nim博弈毫无疑问,这题是往一个有固定容量的箱子里放石子,和从一堆石子里面拿出石子是一个道理. 和传统 ...

  5. spring boot 2.X上传文件限制大小

    Spring Boot 1.3.x multipart.maxFileSize multipart.maxRequestSize Spring Boot 1.4.x and 1.5.x spring. ...

  6. SGU 107 987654321 problem【找规律】

    题目链接: http://acm.sgu.ru/problem.php?contest=0&problem=107 题意: 平方后几位为987654321的n位数有多少个 分析: 虽然说是水题 ...

  7. jQuery 链

    通过 jQuery,可以把动作/方法链接在一起. Chaining 允许我们在一条语句中运行多个 jQuery 方法(在相同的元素上). jQuery 方法链接 直到现在,我们都是一次写一条 jQue ...

  8. Laravel 下的伪造跨站请求保护 CSRF#

    简介# Laravel 可以轻松地保护应用程序免受跨站请求伪造(CSRF) 的攻击.跨站请求伪造是一种恶意的攻击, 他凭借已通过身份验证的用户身份来运行未经过授权的命令. Laravel 会自动为每个 ...

  9. 20172018-acmicpc-southeastern-european-regional-programming-contest-seerc-2017-en A - Concerts

    题意就是给一个字母序列a,以及一个另外一个字母序列b,你需要b中找到字母序列a,并且要求对于在b中的字母序列a,每个单词都需要满足相应的距离 其实很简单,我们利用DP[i][j]代表a已经匹配i个位置 ...

  10. 洛谷P2455 [SDOI2006]线性方程组

    高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 #include <iostream> #include <cstdio> #include <c ...