注意:此讲适合联赛一试学生,以及参加清华北大等名校的自主招生的学生.

经典计数之分配问题:把n个球放进k个盒子。考虑分配方法有三类:1.无限制 2.每个盒子至多一个(f 单的)3.每个盒子至少一个(f 满的).球和盒子都只考虑两种极端情况:全同或全不同。这样一共会有3*2*2=12种分配情况,如下:

证明:

1.略

2.此时只考虑$k\ge n$这种有意义情况,由分步计数原理易得$(k)_n=k(k-1)\cdots(k-n+1)$

3.此时只考虑$n\ge k$这种有意义情况,第一步将n球分成k部分有$S(n,k)$种方法,第二步

分好的k部分球放到$k$个不同的盒子里有$k!$种排法.所以完成这件事情一共有$k!S(n,k)$种方法.

这里$S(n,k)$定义如下:

4.方程$x_1+x_2+\cdots+x_k=n$的非负整数解.

5.此时只考虑$k\ge n$这种有意义情况,由于“f单”意味着每个盒子里至多放一个球,只需

$k$个盒子里取$n$个,然后取出的盒子各放一个球。

6.方程$x_1+x_2+\cdots+x_k=n$的正整数解.

7.$n$元集至多分成$k$部分.

8.定义

9.$n$元集的$k$部分拆数为第二类$stirling$数$S(n,k)$

10.正整数$n$至多分成$k$个部分。这里分拆数$p(n,k)$定义如下:

注意:这里说的分拆是不计较各部的次序的,比如4的分拆为2,1,1一种。但4的有序分拆有三个(2,1,1);(1,2,1);(1,1,2).一般而言有序分拆好处理.比如$n$的$k$部有序分拆就是$x_1+x_2+\cdots+x_k=n$的正整数个数.

显然$p(n,1)=p(n,n-1)=p(n,n)=1;p(n,2)=[\frac{n}{2}]$,当$k>n$时$p(n,k)=0$一般的$p(n,k)$没有简单的表示方法.

注:$(n_1,n_2,\cdots,n_k)_{\ge}$表示$n_1\ge n_2\ge \cdots \ge n_k\ge1$

原则上所有$p(n,k)$可有递推式逐个求得,例如:

11.定义

12.只需考虑$n\ge k$的情况,正整数$n$的$k$部分拆$p(n,k)$

注:当然除了这12种情况外还有一些情况,比如盒子中有部分相同部分不同。但往往这样

的情况的考察意义不大,因为很难期望会有一般的计数公式.

MT【100】经典计数之分配问题的更多相关文章

  1. 100+经典Java面试题及答案解析

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  2. HDU 4901 多校4 经典计数DP

    RT 最近不想写博客,累积了一周多的题目,今天趁着周日放假,全部补上吧 dp[i][j]表示前i个数,操作后的值为j的总个数 注意取或不取,有种完全背包的意味.因为数字小于1024,所以异或的结果也绝 ...

  3. ACM组合计数入门

    1 排列组合 1.1 排列 \[A_n^m=n(n-1)(n-2)\cdots(n-m+1)=\frac{n!}{(n-m)!} \] 定义:从 n 个中选择 m 个组成有序数列,其中不同数列的数量. ...

  4. 从零开始山寨Caffe·肆:线程系统

    不精通多线程优化的程序员,不是好程序员,连码农都不是. ——并行计算时代掌握多线程的重要性 线程与操作系统 用户线程与内核线程 广义上线程分为用户线程和内核线程. 前者已经绝迹,它一般只存在于早期不支 ...

  5. NOIP2017 国庆郑州集训知识梳理汇总

    第一天 基础算法&&数学 day1难度测试 如果要用一个词来形容上午的测试,那真是体无完肤.  成绩: 题目 成绩 评价 T1 50 一般 T2 10 大失所望 T3 0 差 基础算法 ...

  6. java笔记整理

    Java 笔记整理 包含内容     Unix Java 基础, 数据库(Oracle jdbc Hibernate pl/sql), web, JSP, Struts, Ajax Spring, E ...

  7. Phrase-Based & Neural Unsupervised Machine Translation基于短语非监督机器翻译

    1. 前言 本文介绍一种无监督的机器翻译的模型.无监督机器翻译最早是<UNSUPERVISED NEURAL MACHINE TRANSLATION>提出.这个模型主要的特点,无需使用平行 ...

  8. shell脚本57问

    [1]交互方式.非交互方式.Shell脚本是什么? 经常与linux打交道,肯定对shell这个词不陌生.不明白shell意思的,可以自行翻译:外壳.去壳. 这个翻译结果怎么可以与计算机系统联系起来呢 ...

  9. 推荐书单(转自GITHUB)

    Skip to content PersonalOpen sourceBusinessExplore Sign upSign in PricingBlogSupport   This reposito ...

随机推荐

  1. Maltego——互联网情报聚合工具初探(转)

    有时候你可曾想过,从一个Email,或者Twitter,或是网站,甚至姓名等等,能找到一个人千丝万缕的联系,并把这些联系整合,利用起来?Maltego就是这样一款优秀而强大的工具.Maltego允许从 ...

  2. 20155227辜彦霖《基于Cortex-M4的UCOSIII的应用》课程设计个人报告

    20155227辜彦霖<基于Cortex-M4的UCOSIII的应用>课程设计个人报告 一.个人贡献 参与课设题目讨论及完成全过程: 资料收集: 负责主要代码调试: 撰写小组结题报告. 二 ...

  3. 20155333 《网络对抗》 Exp5 MSF基础应用

    20155333 <网络对抗> Exp5 MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:攻击手段,是能使攻击武器(payl ...

  4. Linux 学习日记 1

    这是我第一次系统地学习Linux,希望通过这个学习日记收获一些东西把-- @_@ Grub - 启动管理器   在启动时让用户选择要启动的系统.(但是windows比较霸道--重装windows后会将 ...

  5. 蓝牙disable流程简述

    蓝牙关闭的流程比打开流程要简单,主要就是一些profile的断连以及协议栈相关结构的释放. 这里简单说一下其流程,就直接从协议栈的disable的接口说起了. static int disable(v ...

  6. CCNode详解

    cocos2d的所有类都以CC开头,那么实际上这个类的名字就是Node,类如其名,这个类的实例就是一个节点.Cocos2d的类是树状继承的,而在内存中,各个实例之间也是以“树”这种数据结构相关联的., ...

  7. 【ORACLE】oracle11g RAC搭建

    --安装好操作系统(rhel-server-6.7 on vmware) 注意事项: 1.磁盘配置lvm 2.账号密码 root/oracle ---------------------------- ...

  8. 轻量级直播服务器SRS安装及编译

    最近由于公司开发的需要--互动会议,开始研究直播中的技术.由于自身没有接触过虚拟机导致在研究的过程中遇到了很大的问题,首先官方GitHub给出的文档并没有清晰的指出编译是需要通过何种方式进行编译?以下 ...

  9. 软件测试_测试工具_Loadrunner_IP欺骗

    一.设置IP欺骗的原因: 1.当某个IP的访问过于频繁或者访问量过大时,服务器会拒绝访问请求: 2.某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能.Loadrunner中的IP欺骗通过 ...

  10. Catlike学习笔记(1.4)-使用Unity构建分形

    又两个星期没写文章了,主要是沉迷 Screeps 这个游戏,真的是太好玩了导致我这两个礼拜 Github 小绿点几乎天天刷.其实想开一个新坑大概把自己写 AI 的心路历程记录下,不过觉得因为要消耗太多 ...