书签 分享 收藏 举报 版权申诉 / 66
上传文档赚钱

类型ACM竞赛中的数学方法初步课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4714749
  • 上传时间:2023-01-04
  • 格式:PPT
  • 页数:66
  • 大小:597.50KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《ACM竞赛中的数学方法初步课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    ACM 竞赛 中的 数学 方法 初步 课件 下载 _竞赛_数学_初中
    资源描述:

    1、ACM竞赛中的数学方法初步计算几何 所谓计算几何,一般就指向量方法来解几何问题.为什么用向量?因为解析几何方法在很多时候都显得复杂,而且计算可能比较复杂,有精度损失问题.坐标法基础 计算几何都是以坐标化为前提的 必须知道一些基本的解析几何的方法.例如:两点距离的公式等向量的点积 向量a,b点积(又称内积)的几何意义是a在b(或b在a)上的投影长度(标量,注意可能为负值).计算方法是ab=|a|b|cosC,其中,C是向量a,b的夹角(下同).若向量a=(x1,y1,z1),b=(x2,y2,z2),则 ab=x1x2+y1y2+z1z2 cosC可以由此计算出来应用 用于计算向量夹角.判断两向

    2、量是否垂直 平面方程的向量形式:平面方程ax+by+cz=0(已通过移坐标轴去掉常数项),令平面法向量n=(a,b,c),点X(x,y,z),则平面方程记为nX=0,实际上,如果平面过点P,则方程为n(X-P)=0.应用(续)还可以计算点P(x0,y0,z0)到平面nX=0的距离.把n单位化,不妨仍记为n,把向量OP往n上投影,即可得距离d=|n OP|.判断P是否在平面的哪一边:n OP为正时P在n指向的一侧,否则与n的指向相反向量叉积 叉积又称外积,ab的结果是一个矢量,其数值是以a,b为边的平行四边形面积,即|a|b|sinC,其方向和a,b都垂直,并且,a,b,ab构成右手系.计算方法

    3、:222111,zyxzyxkjiba应用 计算三角形或者平行四边形面积 计算点到直线(进一步,线段)的距离 判断向量(或者直线,线段)平行关系 内积和外积结合可以判断复杂的位置关系点的旋转变换 原来的点(x,y)和变换后的点(x,y)的坐标之间满足下面的公式:x=xcos-ysin y=xsin+ycos 其中,是逆时针旋转的角度,这个公式适用于旋转点在原点的情况.球面距离 已知球半径R,球面上两点A,B的坐标A(x1,y1,z1),B(x2,y2,z2),球心在原点O,球面距离2arccosROBOARRd 已知两点的极坐标 ,其中,为经度数,为纬度数,则可以证明球面距离为 极坐标与直角坐

    4、标之间的换算关系:其中,是纬度,是经度 已知极坐标,也可以先用上面的公式计算直角坐标,然后算球面距离,但是会有精度损失coscoscos sinsinxRyRzR计算几何进一步的话题 内容很丰富,以上列举的是基本的武器 参加ACM竞赛至少还需要了解二维凸包的算法(比较复杂)例题 BOJ1012 The Circumference of the Circle 给出了三个点的坐标,请输出由这三个点所确定的圆的周长,结果保留二位小数 如图,关键是求出外接圆半径R ABC 可以由向量外积算出面积s,并得到sinA.由正弦定理,a/sinA=2R 由此可以计算外接圆面积ABCabcBOJ1062 Pol

    5、ygon Programming with Ease 给了n边形的n条边的中点,求n个顶点的坐标,n是奇数 可以建立两个(x坐标和y坐标)联系n个顶点和n个中点的n元一次方程组,注意到n是奇数,这样的方程有唯一解另一种思路 可以证明以下事实:将一个n边形依次以其每边中点为对称中心做中心对称(反射)变换,n次变换之后,等价于对此多边形做了一个以第一个顶点为中心,180度的旋转变换.可以任意选定一个点p,依次对每个中心做反射变换,n次之后得到q,则第一个顶点是(p+q)/2,由此可以得到其它顶点BOJ1054 Equidistance 给定球面两点A,B的极坐标,再给定第三点P的极坐标,求球面上到

    6、A,B两点距离相等的点(组成一个大圆O1)到P点的最短球面距离 首先,把极坐标转换成直角坐标.以a,b,p代表A,B,P对应的向量.到A,B距离相等的点集构成一个平面,法向量是a-b,过点(a+b)/2,圆O1在这个平面上 向量a-b和p之间的夹角theta可以比较容易计算出来(使用内积方法和反三角函数),用球半径乘以theta的余角即可以得出所求球面距离.注意特殊情况:如果AB两点重合,则整个球面上的点到AB的距离都是相等的,那么P点到AB的距离也是相等的,所以此时所求的球面距离为P到自身的距离,为零.需要单独处理BOJ1059 Balanced Food 给了扇形的桌子和其上的圆形pizz

    7、a的位置和大小,pizza被切成若干块(第一刀是沿x轴正向来切的),求一个取pizza的顺序,使得pizza不从桌子上掉下来 如右图,左边的两块pizza先取下面的后取上面的,可以不掉下来,右边的pizza一定会掉下来扇形重心公式 如果剩下的pizza的重心不在桌子上,pizza会掉下来.剩下的pizza的重心就是所有pizza片的几何中心(坐标的算术平均值),pizza片的重心可以通过积分手算出来sin32cos0202RddrrddrrdsxdsxRRssC 由此可以算得每块pizza片的重心坐标,计算剩下来的这些pizza片的重心坐标的算术平均值就得到整块剩下的pizza的重心(记做C)

    8、坐标.下面的问题是判断C是否在桌子上.判断重心是否在桌上 如图,tuv是桌子,c是pizza的重心坐标.注意到桌子不会比半圆更大,并且tuv是按照逆时针标号,于是得到c不在桌子上有以下情形:tutc0 dist(t,c)dist(t,u)ctuv 实际上,还有更初等的判断方法,就是通过内积计算utc+ctv与 utv是否相等,不等就说明c不在桌上.只是,此法需要计算反三角函数,可能会损失精度.下面的问题是,如何来取这些pizza片才能使得整块pizza不掉下去呢?吃pizza的顺序 如果注意到n的大小只有10,那么可以考虑最稳妥的方法:回溯搜索.就是把所有可能的排列情况按照字典顺序都搜索一遍,

    9、找到第一个可行的顺序就退出搜索.如果搜索完成之后都没有找到可行的取法,说明没有可行方法存在.时间复杂度O(n!)具体方法,如果你曾写过求迷宫的所有可行路的程序,应该很容易实现.以上是深度优先搜索的策略 实际上,本题使用贪心策略也是可以AC的(未能证明)每次都选一块编号最小的可行的pizza片,如果某一步进行不下去,就退出报告无可行取法.时间复杂度O(n2).题外话 本题的操作比较复杂,使用标准C+的算法库配合复数类,可以简化操作,但是要求熟悉上述工具.BOJ1072 Global Roaming 给了卫星的极坐标,球面上一些点的极坐标,判断哪些点可以看到卫星 解法甚多,以下为一种可能是比较简单

    10、的 考虑地球上一点的切平面,它的法向量从地心指向该点.下面只需要判断卫星位于切平面的那一侧即可,这是我们已经解决的问题.初等数论 初等数论的内容也是比较多的,本次主要介绍素数的测试,数的整除性和跟同余有关的一些知识.素数测试 这是数论里的一个基本问题,而且现代社会应用也很广泛,发展了很多算法.首先要知道下面的方法.给了一个数n,从i3开始到n的算术根以步长2进行循环,如果n都不能整除i,那么n就是一个素数 这种方法效率比较低,判断一个数需要O(n1/2)的时间复杂度Eratosthenes筛法筛法(续)筛法并不仅用于计算素数,它还用于很多其它类似机理的场合(如BOJ1074 Assistanc

    11、e Required)例如,计算Euler函数时,可以利用筛法来标号概率型算法 注意到上述两种方法其实都是比较慢的,为了快速判断是否素数,出现了多种测试素数的方法 Miller-Rabin测试:基于Fermat小定理的测试,一次测试把一个合数判断成素数的概率小于1/4,多次测试使得犯错误的概率更小.参加ACM竞赛需要知道这个算法,具体细节可在网上找到唯一分解定理 每个正整数都可以惟一地表示成素数的乘积,其中素数因子从小到大依次出现,换句话说,任意正整数n可以写成n=2a1*3a2*5a3*,其中a1,a2,a3等为非负整数,这称为n的素因子标准分解式数的整除性 令a和b是不全为0的两个整数,能

    12、使d|a和d|b的最大整数称为a和b的最大公约数,用gcd(a,b)表示,或者记为(a,b)令a和b是不全为0的两个整数,能使a|d和b|d的最小整数称为a和b的最小公倍数,用lcm(a,b)表示,或者记为a,b 定理:ab=gcd(a,b)*lcm(a,b)GCD的计算 计算gcd(m,n),使用Euclid除法:while(mn?(m%=n):(n%=m);GCD为m,n中的非零数,也可以写为m+n.时间复杂度O(logn),若mn 上面为循环算法,可以写出递归算法.GCD的计算(2)如果(a,b)=d,则一定存在整数x,y,使得xa+yb=d.求x,y,仍然使用(扩展的)Euclid算法

    13、(递归实现):int gcd(int a,int b,int&x,int&y)if(!b)x=1;y=0;return a;else int r=gcd(b,a%b,x,y);t=x;x=y;y=t a/b*y;return r;同余 设m是一个正整数,若a,b是整数,且m|(a-b),则称a和b模m同余,记做ab(mod m)整数的一种分类方法:给了一个整数m,则可以把整数按照除m的余数分为m类.特别地,m=2时,分为奇数和偶数同余性质 设m是正整数,则下面命题成立:(i)b1a1(mod m),b2a2(mod m),则:b1b2a1a2(mod m),b1b2a1a2(mod m)若ac

    14、bd(mod m),cd(mod m),且(m,c)=1,则ab(mod m)Euler函数 定义:1n中和中和n互素的正整数个数互素的正整数个数记做(n),即为Euler函数 Euler函数的性质:(mn)=(m)(n),m,n是互素正整数.设正整数为n的素因子标准分解式,则:上述两条性质可以用于计算Euler函数的数值 涉及计算Euler函数值的ACM赛题,可以参见POJ2480 Longges problem,POJ2478 Farey Sequence kekeepppn2121)11()11)(11()(21kpppnnEuler定理 设k是与正整数m互素的整数,则k(m)1(mod

    15、 m)推论(Fermat小定理):设p是素数,若p不能整除k,则kp-11(mod p)中国剩余定理(孙子定理)设m1,m2,mk是k个两两互素的正整数,任给k个整数a1,a2,ak,必存在整数x,使得xai(mod mi)(i=1,2,k),且在0=xM=m1m2mk内有唯一解 从此定理的证明过程我们可以得到求出x具体算法 记Mi=M/mi,则(Mi,mi)=1 存在pi,qi,Mipi+miqi=1 记录ei=Mipi,则 j=i时ei1(mod mj)Ji时ei0(mod mj)则e1a1+e2a2+ekak就是一个解,调整(加减M)得到0,m)内的唯一解.此算法用到先前的(扩展的)Eu

    16、clid除法 此问题的一个实例可以参看POJ1006 Biorhythms BOJ1040 Goldbachs Conjecture 给了偶数n,求两个素数a,b,使得n=a+b,并且b-a的值最大.使用筛法选出一个到1000000的素数表,然后从i=3开始枚举素数,遇到合适的就停下来BOJ1074 Assistance Required 也是筛法的例子,把2的倍数筛掉,再把3的倍数筛掉,求剩下来的数中的第n个.在筛的过程中,把没有筛掉的放到一个数组中,可以直接输出第n个数.BOJ1008 Happy 2004 2004x的所有因数的和,除以29的余数是多少?首先,根据Fermat小定理,20

    17、04281(mod 29),根据同余性质,200428n1(mod 29).又知(a+b)%c=(a%c+b%c)%c,(ab)%c=(a%c)(b%c)%c简化计算的因子 考虑2004x的因子,把它们分成以下几类:是2004x-28n的因子,当然也是2004x的因子 不是2004x-28n的因子,但是2004x的因子 首先说明,第二类因子的和模29等于0.2004=22*3*167,根据同余性质,只需要考虑4,3,22(=167%29)作为2004的因子.令y=x-28n,则第二类因子必然可以写为ay*2s*3r*22t的形式,其中a=22,3,22证明细节 在上述表达式中,2s*3r*22

    18、t一定是200428n的因子.从而,s,r,t一定可以取遍128n(s到56n)的值.固定r,t的取值,对s求和,只需证明say*2s*3r*22t%29=0,其中y,r,t是常数.上式等价于证明s2s%29=0,s=1,56n,由等比数列求和公式得到s2s=256n-1.另一方面,根据Fermat小定理,2281(mod 29),从而256n-1%29=0,得证.求解 我们只需要考虑2004y的因子的和模29.其中y=x%28.2004y的素因子标准分解式为22y3y167y,只需考虑形如22s*3r*22t(s,r,t=y28)的因子.可以通过枚举法得出所有因子.进一步,这些因子的和模29

    19、的结果就可以得出来了 优化建议 不用考虑所有因子,只分别考虑4,3,22的幂这部分因子的和模29的结果,相乘后再模29可得最后结果.依据:求余操作可以与加法和乘法交换次序.基于上面的结果,注意到这些幂的指数最大到27,可以做三个表,分别存放4,3,22的幂的和模29的结果.如p4i表示0=s=1 J(2n+1)=2J(n)+1,n=1 从上面的公式,可到下面的表 n12345678J(n)11313571n910111213141516J(n)35791113151猜测:J(2m+t)=2t+1,0=t2m(*)数学归纳法证明 m=0时,t=0,(*)式表明,J(1)=1,成立.假定m-1时成

    20、立,往证m时成立 若t为偶数,J(2m+t)=2J(2m-1+t/2)-1=2(2*t/2+1)-1=2t+1,(*)成立 若t为奇数,J(2m+t)=2J(2m-1+t/2)+1=2(2*t/2+1)+1=2t+1,(因为t=2t/2+1).(*)成立进一步讨论 对于编程而言,给了n,我们需要知道m.2m提示我们考虑n二进制形式.事实上,n的二进制形式的最高位刚好是第m+1位(为什么?)把这一位1变成0,就得到t,然后把t左移一位,得到2t,最后加上1,就是最终的结果.问题 对于此问题的更一般的形式,大家可以自己试着讨论.可以参阅Concrete Mathematics1.3节BOJ1051 Let it bead 此题可以使用搜索来解,也可以使用组合计数的方法来解.使用后者需要牵涉到较多的数学知识(主要是置换群的知识),这里给出公式如下:这就是最后计算项链的穿法种数的公式,详细推导见另一个幻灯片121gcd(,)1022s1(,)s2()ssss issiscN G Ccscc当 为奇数当 为偶数2代数方法 代数方法在本次题目中几乎没有涉及 主要掌握高斯消去法解线性方程组,这次题目如BOJ1062即可以解方程组求解 注意有些赛题有意考察矩阵乘法及快速乘方,如ZOJ Monthly,October 2005 http:/

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:ACM竞赛中的数学方法初步课件.ppt
    链接地址:https://www.163wenku.com/p-4714749.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库