- 1、本文档共87页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
l组合数学1
基本组合数学 组合数学简介 组合数学起源于古老的数学娱乐和游戏。而在当今社会中同样发挥着重要的作用。 组合数学研究一个集合的物体进行满足一些规则的排列。具体的说,组合数学研究的是这些排列的存在性、计数和分类。 在ACM/ICPC中用到的组合数学知识有: 一一对应原理、加法乘法原理、多重集排列和组合、排列生成、递推关系、母函数、鸽巢原理、容斥原理、群和置换群、贝恩塞特引理和波利亚定理 一一对应原理 “一一对应”概念是一个在计数中极为基本的概念。一一对应既是单射又是满射。 如我们说A集合有n个元素 |A|=n,无非是建立了将A中元与[1,n]元一一对应的关系。 在组合计数时往往借助于一一对应实现模型转换。 比如要对A集合计数,但直接计数有困难,于是可设法构造一易于计数的B,使得A与B一一对应。 一一对应 例 在100名选手之间进行淘汰赛(即一场的比赛结果,失败者退出比赛),最后产生一名冠军,问要举行几场比赛? 一一对应(下午讨论) 某机要部门安装了电子锁。M(M8)工作人员每人发一张磁卡,卡上有开锁的密码特征。为了保证安全,规定至少要有N(N5)个人同时使用各自的磁卡才能将所打开。现在需要计算一下,电子锁至少要有多少种特征,每个人的磁卡上至少有几个特征。 加法乘法原理 加法原理 把事情分成N类,每类有Ci种做法,则该事情共有C1+C2+…+CN种做法 乘法原理 把事情分成N步,每步有Ci种做法,则该事情共有C1*C2*…*CN种做法 加法乘法原理的应用 单色三角形(来源于POI) 给定空间里的n个点,其中没有三个点共线。每两个点用红色或兰色线段连接。如果一个三角形的三条边同色,则称这个三角形是单色三角形。对于给定红色线段的列表,希望能找出单色三角形的个数。 多重集的排列 全排列的生成算法 就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来。 2.9.2 序数法 2.9.2 序数法 2.9.2 序数法 2.9.2 序数法 2.9.2 序数法 排列生成算法讨论 给定{1,2,…,n},求其所有排列中的第m个排列。(acm.hdu.edu.cn) 组合生成算法(所有的) 组合生成算法(r-组合) 母函数的定义 以整数拆分为例: 观察以下的母函数: 主打例题:HDOJ_1398 Square Coins Sample Input 210300 Sample Output 1427 算法分析: 典型的利用母函数可解的题目。 G(x)=(1+x+x2+x3+x4+…)(1+x4+x8+x12+…)(1+x9+x18+x27+…)… 指数型母函数应用举例 有袋子里均匀地装着c种颜色的巧克力,每种巧克力均有无限多。佳佳每次从袋子里拿一块放在桌子上,如果桌子上已经有一块颜色相同的巧克力,佳佳就把两块巧克力都吃掉。佳佳一共取出n块巧克力,请问最后桌子上有m块的概率有多大?例如c=5,n=100,m=2时概率为0.625 例:(2050)折线分割平面 问题描述: 平面上有n条折线,问这些折线最多能将平面分割成多少块? 样例输入 1 2 样例输出 2 7 如果正整数构成的集合X满足以下条件,我们称它为n-k特殊集: 集合X中每个元素均不同且不超过n 集合x的所有元素之和大于k 集合x中不包含任意一对相邻的自然数 给出n,k,求n-k特殊集合有多少个? 如:输入6,3输出17 小于n且与n互素的数有多少个? 如图是一个国际象棋棋盘。两个象互不攻击当且仅当它们不处于同一条斜线上。在一个n*n(n=30)的棋盘上放k个互不攻击的象有多少种方法? 置换群的应用举例 佳佳最喜欢与老师和小伙伴们一起玩传球的游戏。游戏开始时所有小朋友分成两组,每组n人,围成一个圈。每个小朋友都有一个编号(1…n)这个编号在其所在组是唯一的。游戏开始之前,每个小朋友都有一个球,球上有编号(1..n),并且一个组中的球不会有两个相同的编号。然后,所有小朋友必须闭上研究,游戏开始。随着老师口中的哨子发出的节奏,每个小朋友都用一只手把球传到右边,而用另一只手接左边的来球。 突然,老师的哨子停了,关键的时刻到了。小朋友马上睁开眼睛,开始与同组的小朋友进行传球,争取以最短的时间把球传到位。传到位是指一个组中的每一个小朋友手上的球的编号与他自己的编号相同。最后获胜的就是那个最先把球传到位的组 这个游戏非常有趣,小朋友们玩了许多次。聪明的佳佳总结出一条经验:总是两个人之间的对传。 现在需要你写一个程序,帮助小朋友们确定传球方法。 问题1:至少需要几次对传才能将
文档评论(0)