zoukankan      html  css  js  c++  java
  • 关于盒子与球的问题

    题面

    故事发生在某一天的下午,

    我如同往常一样打开题目...... 然后成功被一堆相同的不同的盒子和球绕晕惹( T﹏T )

    为了防止自己再次忘记我觉得还是有必要记录一下哈哈哈哈

    题目

    1 给定 N 个不同的球,放进 M 个不同的盒子,盒子允许为空,有多少种方案?

    2 给定 N 个不同的球,放进 M 个不同的盒子,盒子不允许为空,有多少种方案?

    3 给定 N 个不同的球,放进 M 个相同的盒子,盒子允许为空,有多少种方案?

    4 给定 N 个不同的球,放进 M 个相同的盒子,盒子不允许为空,有多少种方案?

    5 给定 N 个相同的球,放进 M 个不同的盒子,盒子允许为空,有多少种方案?

    6 给定 N 个相同的球,放进 M 个不同的盒子,盒子不允许为空,有多少种方案?

    7 给定 N 个相同的球,放进 M 个相同的盒子,盒子允许为空,有多少种方案?

    8 给定 N 个相同的球,放进 M 个相同的盒子,盒子不允许为空,有多少种方案?

    T1 :

    对于任意一个球, 均有放入(1-M) 一共(M)种方案 因此方案数为 (M^N)

    T6:

    可以转化为, 在排成一排的(N)个小球的间隙中插入(M-1)根木棍使得(N)个小球分成(M)个部分

    一共有(N-1)个间隙,因此方案数为(C_{n-1}^{m-1})

    T5:

    是不是感觉和T6很像呢o( ̄▽ ̄)o 实际上做法也挺类似的

    我们先想一想, 如果有(N) 个相同的球,放进 (M) 个不同的盒子,盒子不允许为空,那我们在每一个盒子中先放上一个球,

    是不是问题就变成了求——有(N-M) 个相同的球,放进 (M) 个不同的盒子,盒子允许为空的方案数了呢(。・∀・)ノ゙

    而反过来推显然也是成立的, 因此,第五个问题就变成了求(N+M) 个相同的球,放进 (M) 个不同的盒子,盒子不允许为空的方案数啦

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

    T4:

    假设我们已经考虑完了前(n-1)个球的摆放情况, 现在开始考虑第(n)个球应该放在哪里了呀

    细想一下,大概可以分成两种情况的:

    ((1))它单独放在一个新的箱子里(不是盒子的吗emm)

    假设新增一个盒子后一共有(m)个盒子, 那么它的方案数一定是和(n-1)个球,(m-1)个盒子的方案数

    ((2))它放在之前的任意一个盒子当中

    假如现在是(m)个盒子的话, 那么它的方案数就是(m*)((n-1)个球,(m)个盒子的方案数)啦

    因此, 若我们用(f[n][m])来表示(n)个球(m)个盒子的方案数的话, 那么(f[n][m])的递推式应该为(f[n][m]=f[n-1][m-1]+f[n-1][m]*m)

    边界:(f[i][j]=1(i=j 或 j=1)),f[i][j]=0(j>i))

    实际上,这就是第二类斯特林数

    T3:

    (M)个盒子, 可以为空其实可以转化为有(1、2、3...M)个盒子, 不允许为空的情况

    因此方案数为(sum_{i=1}^{m}f[n][i]) f[][]的意义与上一题相同哦

    T2:

    与T4有关哦

    我们得出一种(N) 个不同的球,放进 (M) 个相同的盒子,盒子不为空的方案后,再给每个盒子编号 一共有(M!)种不同的编号方案

    因此, 总方案数为(f[N][M]*M!)

    T7:

    令方案数为(f[n][m]), 我们可以分别考虑盒子均不为空和有空盒子两种情况

    当有空盒子时, 因为一定有至少一个空盒子 , 所以(f[n][m]=f[n][m-1])是成立的

    当所有的盒子中都放了小球的时候,

    我们可以在每个盒子中先都放一个小球, 于是问题就变成了求(N-M) 个相同的球,放进 (M) 个相同的盒子,盒子可以为空的方案数啦

    此时(f[n][m]=f[n-m][m])emm

    因此, 递推式就找到啦o( ̄▽ ̄)d (f[n][m]=f[n-m][m]+f[n][m-1]) 边界为(f[i][j]=1 (i=0or1 或 j=1),f[i][j]=f[i][i] (j>i))

    T8:

    在每个盒子中先都放一个小球, 于是问题就变成了求(N-M) 个相同的球,放进 (M) 个相同的盒子,盒子可以为空的方案数啦

    方案数:(0(M>N))或者 (f[N-M][M])((N>=M),(f) 就是中的 (f)呀)。

  • 相关阅读:
    Centos7新特性——systemd取代init管理服务
    Git初探
    Nginx内置变量
    Nginx初探
    PHP多进程初步
    golang消息队列nsq
    golang 的 go异步编程通道要注意的问题
    golang 连接池mysql
    golang centos运行方法
    golang go path和go mod的区别
  • 原文地址:https://www.cnblogs.com/hyxss/p/14185942.html
Copyright © 2011-2022 走看看