信息竞赛中的简单数学类问题及其数学构造方法.ppt
《信息竞赛中的简单数学类问题及其数学构造方法.ppt》由会员分享,可在线阅读,更多相关《信息竞赛中的简单数学类问题及其数学构造方法.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数学类问题数学类问题精度处理(高精度、实数处理)组合数学问题(Fibonacci数列、第二类数、卡特兰数、POLYA原理、排列组合计数、加法原理与乘法原理)进制问题(特定二进制串的统计、二分查找、利用二进制进行路径、状态描述、二进制转换)数学类问题数学类问题递推与递归关系(递推关系式、通项公式、数列、博弈问题)数位、数字、特定数值的查找、统计(数值处理、质因子分解、幂次分解、数值表达式、添加运算符、分式与实数运算)数学杂题(回文数字、矩阵处理、约瑟夫与反约瑟夫问题)数学剪枝(无解判定、解线性方程组、限定搜索范围)数学类问题的思维过程相关公式、定理、原理的应用寻找规律、归纳整理递归与递推关系式按
2、照数学方法构造、二进制转化等技巧性处理注意事项:规律准确(小数据手工推算、搜索程序验证)数据类型是否合理、数据范围是否超界(大数据处理)整数划分问题(一)最优分解方案 将一个整数n分成若干个互不相同互不相同的数的和,使得这些数的乘积最大。其中1=n=1000。分析初看此题,最容易相到的算法是搜索,但此题的最大可以达到1000,搜索肯定会超时,而本题所给的限制条件也不多,即便是加上一些剪枝也起不到很好的效果。一般遇到这种情况我们可以从简单的数据分析起。在解一些问题的时候(特别是用数学方法解的问题),当我们无从解决时,可以从简单的数据考虑起,以便发现其中的一些规律,这种作法对解题是很有帮助的。n
3、分解方案 MUL 5 2,3 66 2,4 87 3,4 128 3,5 159 2,3,4 2410 2,3,5 30观察这几组数据,不难发现所有的分解方案的数的个数都等于可以分出的最多个数最多个数,其实我们并不难想到,要想使乘积最大,应尽量使分得的数多。另一方面,我们在初中数学中就已经证明过当数(正数)的和相等时,数的差越小,数的积也就越大,因此我们可以在分的数的个数最多的情况下使数之间的差尽量小差尽量小,这样得出来的方案必定是最优的。整数分划(二)例例题题2:若干个正整数之和为n,其中:n=1,j=1,2,,k,k=1 1=n1=n2=1,mN)初始(边界条件)为F(0,m)=1(m0)
4、目标状态为F(N,N)。例题例题例题例题4 4:极值问题(最高时限15s)已知m、n为整数,且满足下列两个条件:m、n1,2,K,(1K109)(n 2mnm2)21编一程序,由键盘输入K,求一组满足上述两个条件的m、n,并且使m2n2的值最大。例如,若K1995,则m987,n1597,则m、n满足条件,且可使m2n2的值最大。【分析分析分析分析】方法一方法一从初等数学的角度考虑:由条件(n 2mnm2)21得出:n 2mnm2+1=0n 2mnm21=0根据求根公式N1,2(m1,2)/2 n3,4(m1,2)/2其中:1sqrt(5*m24);2sqrt(5*m24);【分析分析分析分析
5、】再考虑条件。由于n1,因此排除了n3和n4存在的可能性.又由于n和m是整数,因此1和2应为整数。由于m2n2单调递增,从mk出发,按递减方向将m值代入n的求根公式。只要1(或2)为整数、n1(或n2)为整数且小于k,则得出的一组m和n一定使 m2n2的值最大。【算法描述算法描述】mk;while mi do begin 求1 if 1为整数 then begin 求n1;if(n1为整数)and(n1k)Then begin 输出m和n1;halt;end end;then 求2;if 2为整数 then begin 求n2;if(n2为整数)and(n2k)then begin 输出m和n
6、2;halt;end end;then mml;end;while上述算法从数学意义上来说,是一定可以出得出正确解的。但是该算法疏漏了一个重要条件 1k109。如果K值超过105,上述算法不可能在限定的15秒内出解。【分析分析分析分析】方法二方法二分析小数据会发现:m,n是Fibonacci数列的相邻两项。因为:(n 2mnm2)2 1故:(m2+mn n 2)2 1又:m 2mnn2(mn)2mn2n2 (mn)2(mn)nn2 故:(m2mnn2)2(mn)2(mn)nn22 即:(n2mnm2)2(mn)2(mn)nn22【分析分析分析分析】由上述数学变换式可以得出,如果m和n为一组满足
7、条件和条件的解,设nmn,m n那么n,m 也是一组满足条件和条件的一组解。将所有满足条件和条件的m和n 按递增顺序排成一个Fibomacci数列 1,1,2,3,5,8,数列中小于k的最大两个相邻数即为试题所要求的一组m和n。算法算法:利用Fibomacci数列顺推m,n,求出在条件范围内的m,n最大值,此时m2n2的值最大。例题例题例题例题5 5:Kathy函数函数(HNCOI)Tiger非常喜欢数学,所以他参加了学校组织的数学课外兴趣小组。在兴趣小组的学习当中,老师向Tiger介绍了Kathy函数,Kathy函数是这样定义的:例题例题例题例题5 5:Kathy函数函数(HNCOI)Tig
8、er对Kathy函数产生了浓厚的兴趣,他通过研究发现有很多的数n都满足f(n)=n,对于一个给定的数m,他希望你求出所有的满足f(n)=n(n=m)的自然数n的个数,其中m=10100。组合计数Catalan数定义:一个凸n边形通过不相交于n边形内部的对角线把n边形拆分成若干三角形的不同拆分数。分析设Cn表示凸n边形的拆分方案总数。由题目中的要求可知一个凸n边形的任意一条边都必然是一个三角形的一条边,边P1 Pn也不例外,再根据“不在同一直线上的三点可以确定一个三角形”,只要在P2,P3,Pn-1点中找一个点Pk(1k=0的数列个数。Catalan数的应用(加括号)序列a1a2.ak的元素顺序
9、保持不变,按不同结合方式插入合法圆括号对的方案数。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操作)。使用这两种操作,由一个操作数序列就操作)。使用这两种操作,由一个操作数序列就可以得到一系列的输
10、出序列,下表为由可以得到一系列的输出序列,下表为由1 2 3 生成序列生成序列2 3 1 的过程。的过程。步骤0123456操作数序列1232333栈1211311输出序列2223231Catalan数的应用(栈 NOIp2003)结合定义我们很容易能发现:如果进栈看成1,出栈看成0,在任何一位上累计的“0”的个数不大于累计的“1”的个数,因为必须在栈里有数的情况下才能向外弹数。原题转化为n个1和n个0组成一个2n位的二进制数,要求从左到右扫描,“0”的累计数不大于“1”的累计数,求满足条件的数有多少。任务:你的程序将对给定的n,计算并输出由操作数序列1,2,n经过操作可能得到的输出序列总数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息 竞赛 中的 简单 数学 问题 及其 构造 方法
限制150内