day1数学方法-曹立国-noip培训.pptVIP

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
day1数学方法-曹立国-noip培训.ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 组合计数 Catalan数 定义:一个凸n边形通过不相交于n边形内部的对角线把n边形拆分成若干三角形的不同拆分数。 分析 设Cn表示凸n边形的拆分方案总数。由题目中的要求可知一个凸n边形的任意一条边都必然是一个三角形的一条边,边P1 Pn也不例外,再根据“不在同一直线上的三点可以确定一个三角形”,只要在P2,P3,……,Pn-1点中找一个点Pk(1kn),与P1、Pn 共同构成一个三角形的三个顶点,就将n边形分成了三个不相交的部分(如图3所示),我们分别称之为区域①、区域②、区域③,其中区域③必定是一个三角形,区域①是一个凸k边形,区域②是一个凸n-k+1边形。 P1 Pn ① ② ③ 图3 P2 P3 Pk Pn--1 分析 区域①的拆分方案总数是Ck,区域②的拆分方案数为Cn-k+1,故包含△P1PkPn的n 边形的拆分方案数为CkCn-k+1种,而Pk可以是P2,P3,……,Pn-1种任一点,根据加法原理,凸n边形的三角拆分方案总数为 , 同时考虑到计算的方便,约定边界条件C2=1。 P1 Pn ① ② ③ 图4 P2 P3 Pk Pn--1 分析 =C( 2n , n ) / ( n + 1) 具体实现时,若直接用上述公式计算,对数字的精度要求较高。可将其化为递推式 再进行递推计算,并且注意类型的定义要用comp型。 Catalan数的应用(部分和序列) n个+1,n个-1构成2n项 a1,a2,a3,a4,,,,,,a2n 其部分和满足 a1+a2+......ak (k=1,2,3,...2n)=0的数列个数。 Catalan数的应用(加括号) 序列a1a2..ak的元素顺序保持不变,按不同结合方式插入合法圆括号对的方案数。 n=4 (a((bc)d)) (a(b(cd))) ((ab)(cd)) (((ab)c)d) ((a(bc))d) 一个操作数序列,从1,2,一直到n,栈A的深度大于n。现在可以进行两种操作:1.将一个数,从操作数列的头端移至栈的头端(对应栈的push操作)2.将一个数,从栈的头端移至输出序列的尾端(对应栈的pop操作)。使用这两种操作,由一个操作数序列就可以得到一系列的输出序列,下表为由1 2 3 生成序列2 3 1 的过程。 步骤 0 1 2 3 4 5 6 操作数序列 123 23 3 3 ? ? ? 栈 ? 1 21 1 31 1 ? 输出序列 ? ? ? 2 2 23 231 Catalan数的应用(栈 NOIp2003) 结合定义我们很容易能发现:如果进栈看成1,出栈看成0,在任何一位上累计的“0”的个数不大于累计的“1”的个数,因为必须在栈里有数的情况下才能向外弹数。 原题转化为——n个1和n个0组成一个2n位的二进制数,要求从左到右扫描,“0”的累计数不大于“1”的累计数,求满足条件的数有多少。 任务: 你的程序将对给定的n,计算并输出由操作数序列1,2,……,n经过操作可能得到的输出序列总数。 分析 n个数,分别为1~n,排成一个长度为n的排列。若每一个数的位置都与数的本身不相等,则称这个排列是一个错排。例如,n=3,则错排有2 3 1、3 1 2。编写程序,求n的错排个数。 错排问题(经典问题) 组合计数 我们设k个元素的错位全排列的个数记做:W(k)。 四个元素的错位排列W(4)我们用穷举法可以找到如下9个: (4,3,2,1)(3,4,1,2)(2,1,4,3)   (4,1,2,3)(3,4,2,1)(3,1,4,2)   (4,3,1,2)(2,4,1,3)(2,3,4,1) 它们有什么规律呢? 分析 通过反复的试验,我们发现事实上有两种方式产生错位排列: ?A.将k与(1,2,…,k-1)的某一个数互换,其他k-2个数进行错排,这样可以得到(k-1)×W(k-2)个错位排列。 ?B.另一部分是将前k-1个元素的每一个错位排列(有W(k-1)个)中的每一个数与k互换,这样可以得到剩下的(k-1)×W(k-1) 个错位排列。 根据加法原理,我们得到求错位排列的递推公式W(k): W(k) = (k–1) * [W(k–1)+W(k–2)] 分析 构造法 “构造法”解题

文档评论(0)

cai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档