无视标题,从我做起

update in 2018.10.1:

补充了"至多为1的四中情况"

这玩意儿的官方名字应该是叫"Twelvefold way",共用12种情况。

球异,盒同

不空

该情况为经典的第二类斯特灵数

设\(f[n][m]\)表示答案。

\(f[n][m] = f[n - 1][m - 1] + m \times f[n - 1][m]\)

边界条件:\(f[0][0] = 1\)

答案 = 第\(n\)个数单独占一个盒子 + 第\(n\)个数和之前的数共占一个盒子,同时考虑不同位置的贡献

注意最后要乘\(m\),因为第\(n\)个数放置的位置对答案是有影响的

例如{1}{2 4}{3}与{1}{2}{3 4}是不同的方案

题目中的应用

可空

直接枚举用了多少个盒子

设\(g[n][m]\)表示答案

则\(g[n][m] = \sum_{i = 0}^m g[n][i]\)

至多放\(1\)

此类"至多放\(1\)"的问题若\(n>m\)则方案数一定为\(0\)

答案为\([n <= m]\)

球异,盒异

可空

每一个球都有\(m\)种放法,故答案为\(m^n\)

不空

设\(g[n][m]\)表示答案,\(s[n][m]\)为第二类斯特灵数

则\(g[n][m] = s[n][m] \times m!\)

相当于是考虑\(m\)个盒子的顺序

至多放\(1\)

\(ans = m!(m-1)! \dots (m - n + 1) ! = \frac{m!}{(m-n)!}\)

球同,盒异

不空

插板法的经典例题

\(n\)个球之间形成\(n - 1\)个空位,把\(m\)个盒子塞到里面

方案为\(C_{n - 1}^{m - 1}\)

可空

注意这里不能直接套用“插板法”得到\(C_{n+1}^{m - 1}\)

因为使用插板法的前提条件之一就是“分成的方案不能为空”

考虑先在每个盒子中放一个小球,那么剩下的小球再往里放的时候就可以无视“非空的条件了”

故方案为\(C_{n+m-1}^{m - 1}\)

这里再补充一下为什么不能直接套用插板法

比如\(n = 2, m = 3\)时,方案为\(6\),而直接套用插板法得到的答案为\(3\)。

究其原因,是因为没有考虑到两个板同时占了一个空位的情况。

至多放\(1\)

考虑每个球放在了哪里。

\(ans = C_m^n\)

球同,盒同

可空

这种情况下,不同方案之间与具体用了哪个球以及放到了哪个盒子里都没有必然的联系

区分不同方案的方法是:把每个盒子的球的个数从小到大排序,比较最终的情况是否相同

例如:\(1 \ 7 \ 1\)与\(1 \ 1 \ 7 \\)实际是一种方案

对于\(n = 8, m = 3\)而言一共有\(10\)种不同的放法

0 0 8
0 1 7
0 2 6
0 3 5
1 1 6
1 2 5
1 3 4
2 3 4
3 3 3

从上面的分析我们也不难得出结论

\(n\)个相同的小球放到\(m\)个相同的盒子里,盒子可以为空的方案数 与一个整数\(n\)拆成\(m\)段非递减序列的方案数相同

设\(f[n][m]\)表示\(n\)个小球放到\(m\)个相同的盒子里,盒子可以为空的方案数

边界条件为\(f[0][k] = 1, f[1][k] = 1, f[k][1] = 1\)

递推方程\(f[n][m] = \begin{cases} f[n - m][m] + f[n][m - 1] &n >= m \\ f[n][m - 1] &n < m \end{cases}\)

解释一下:

我们考虑这\(m\)个位置中是否有空盒子

显然:答案 = \(m\)个位置中至少有\(1\)个位置为空的方案 + \(m\)个位置中全不为空的方案

不空

我们可以先在所有盒子里都放了一个,然后对剩下的球讨论

同样可以得到一个结论:

\(n\)个相同的球,放到\(m\)个相同的盒子里,盒子不能为空的方案数 与把整数\(n\)拆成\(m\)段,每段不能为\(0\)的方案数相同

设\(g[n][m]\)表示\(n\)个小球放到\(m\)个相同的盒子里,盒子不能为空的方案数

则\(g[n][m] = f[n - m][m]\),

题目链接

至多放\(1\)

\(ans = [n <= m]\)

参考资料

“n个球放到m个盒子”问题整理

浅谈n个球和m个盒子之间的乱伦关系相关推荐

  1. 浅谈股市、美元汇率与原油价和黄金价格间的关系

    浅谈股市.美元汇率与原油价和黄金价格间的关系 影响股市.汇市.油价 和黄金价格的因素众多.但是在一般情况下,它们之间存在此消彼长的互动关系. 一.股市与原油价格 如果股市下跌,一般认为是经济形势不好的 ...

  2. 浅谈Greenplum的Boolean类型与Text类型之间的转换

    在Greenplum或者Deepgreen中,如果我们想直接把Boolean类型转化为Text,那么可能会让你失望,因为他们不支持这种直接转化,但是可以通过UDF的方式实现,下面来简单看一下这个过程. ...

  3. 浅谈CPU、内存、虚拟内存、硬盘之间的关系

    2019独角兽企业重金招聘Python工程师标准>>> 大家都知道组装电脑需要CPU硬盘,内存等硬件,系统中还含有虚拟内存,对于其中的相互关系,大家可能不了解! 下面用最简明易懂的语 ...

  4. 浅谈L0,L1,L2范数及其应用

    原文传送门:浅谈L0,L1,L2范数及其应用 浅谈L0,L1,L2范数及其应用 在线性代数,函数分析等数学分支中,范数(Norm)是一个函数,其赋予某个向量空间(或矩阵)中的每个向量以长度或大小.对于 ...

  5. unity3D AR涂涂乐制作浅谈

    unity3D AR涂涂乐制作浅谈 AR为现在是虚拟现实较为火爆的一个技术,其中有个比较炫酷的就是AR涂涂乐的玩法,这个技术可以把扫描到的图片上的纹理 粘贴到模型上实现为模型上色的功能,但是我们需要怎 ...

  6. 浅谈实时对战网络游戏的同步机制

    浅谈实时对战网络游戏的同步机制 重要的性能指标 三种不同方向的技术实现介绍 非帧状态同步 帧指令同步 帧状态同步 三种同步方式的对比 帧状态同步和ECS架构 实时对战游戏,相信大家都不陌生,一些经典的 ...

  7. 电磁波传播相位是否会变化_浅谈电磁波相位

    浅谈电磁波相位 电磁波相位,如果不是电子和无线点专业的人根本接触不到.我也是在跟一个Ham通联的过程中第一次听过这个词,但是我瞬间就明白了什么是电磁波相位.很多玩了十几年的老Ham可能都没有接触过电磁 ...

  8. 丁小平:浅谈科学模型及突变论等问题

    作者:北京二十一世纪药理科学研究院 丁小平 科学的根本任务在于揭示规律,进而使人们可以遵循利用规律服务生产和生活.从揭示方式看,规律可以分为完成型规律和逼近型规律.所谓完成型规律,是人脑通过逻辑从有限 ...

  9. 浅谈程序员的英语学习

    作为在中国工作的程序员,不懂得英语似乎也不妨碍找到好工作,升职加薪.但程序员这个工种则稍有不同,因为程序,尤其是高级语言,基本上都是由英语 和数字表达式构成的.英语对于程序员十分重要.我的大学本科全部 ...

最新文章

  1. Dubbo 18 问
  2. java-IO操作简介
  3. 【学习笔记】33、具有Python特色的循环
  4. 使用vue脚手架模块化开发
  5. UVa272-TeX中的引号
  6. python函数递归 汉诺塔
  7. Angular2或Angular4使用echarts , ngx-echarts的方法
  8. Python2安装说明
  9. 从零开始搭二维激光SLAM --- 基于g2o的后端优化的代码实现
  10. Linux-2.6.21的负载均衡
  11. java处理Excel数据
  12. 几分钟,就看到人性的几个面孔
  13. 工业企业外购材料进项税额的会计处理
  14. 关于win10无线网卡不可用,网络适配器出现黄色感叹号问题的修复方式
  15. 如何解决OpenStack上Windows虚机CPU负荷
  16. CSS:N种使用CSS 绘制三角形的方法
  17. 对话系统论文集(1)-BBQ网络
  18. 利用Docker创建镜像运行jar包
  19. 作为中国传统小吃,凉果蜜饯在全球范围内越来越受欢迎
  20. 卡尔曼滤波的推导过程详解

热门文章

  1. .net控件开发系列
  2. 使用as3crypto在Flex中实现AES加密
  3. BZOJ 1007 水平可见直线
  4. MySQL数据库中如何选择VARCHAR和CHAR类型
  5. 架构师速成8.3-可用性之分库分表
  6. git 查看、创建、删除 本地,远程 分支
  7. 生成32位字母数字的随机数
  8. windows消息宏(转)
  9. 如何保证企业IT基础设施的高可用性
  10. 用Dell光盘安装系统