网站大量收购独家精品文档,联系QQ:2885784924

李超+线性代数在OI中的应用与题目讲解.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
李超+线性代数在OI中的应用与题目讲解.ppt

线性代数在OI中的应用 与题目讲解 北京大学 李超 线性方程组 如何解n元线性方程组? 高斯消元法 矩阵 由n×m个数排成n行,m列的一张表称为一个n×m矩阵。 矩阵中的每一个数称为这个矩阵的一个元素。 矩阵的第i行与第j列交叉位置的元素称为矩阵的(i,j)元。 若一个矩阵的行与列相等,则称它为方阵。 矩阵的加法与数量乘法 设A和B均为n×m矩阵,且 则称C为A与B的和,记作C=A+B 设A为n×m矩阵,且 则称C为k与A的数量乘积,记作C=kA 矩阵乘法 设A为s×n矩阵,B为n×m矩阵,令C为s×m矩阵,且 则称C为A与B的乘积,记作C=AB 只有左矩阵的列数与右矩阵的行数相同时才能相乘 乘积矩阵的(i,j)元等于左矩阵的第i行与右矩阵的第j列对应元素乘积之和 乘积矩阵的行数等于左矩阵的行数,列数等于右矩阵的列数 矩阵乘法 为什么我们要这样定义矩阵乘法? 在二维平面上考虑一个点A(x,y) 将线段OA逆时针旋转θ,则A点所对应的A点的坐标是什么? 令 ,α为∠AOx,则有 x=rcosα,y=rsinα x=rcos(α+θ) , y=rsin(α+θ) x=rcosαcosθ-rsinαsinθ=xcosθ-ysinθ y=rsinαcosθ+rcosαsinθ=xsinθ+ycosθ 矩阵乘法 x=xcosθ-ysinθ y=xsinθ+ycosθ 将方程的系数拿出来排成一张表 则该矩阵表示了转角为θ的旋转 则该矩阵表示了转角为φ的旋转 矩阵乘法 考虑转动角度θ+φ 矩阵乘法的性质 矩阵的乘法不适用交换律 交换后的矩阵甚至不能相乘!即使能够相乘也不一定满足 矩阵的乘法适用结合律 直接应用定义展开即可得到 矩阵的乘法适用左分配律与右分配律 A(B+C)=AB+AC (B+C)D=BD+CD 矩阵乘法的结合律是许多题目解题的关键! Problem zero 幽鬼是游戏Dotb的一个英雄,有个被动技能“折射”,可以将受到的伤害的一定百分比平均反弹给周围的其他英雄 现在有N个幽鬼,每个幽鬼有不同折射率。给出每个幽鬼可以折射到的英雄与幽鬼的折射率,并在一开始对第K个幽鬼造成P点伤害,求最后每个幽鬼受到的伤害。 例:若1号幽鬼能反弹到2号幽鬼,折射率为60%,2号幽鬼不能反弹到1号幽鬼,且在最初给予1号幽鬼400点伤害,则最后1号幽鬼受到160点伤害,2号幽鬼受到240点伤害 折射进行无数次 N=100 Problem zero Solution 设第i个幽鬼受到的总伤害为Xi 则对于每个幽鬼可以列出一个关于伤害的方程 共N个方程 解方程组即可 O(N^3) Problem one 给定A[0],A[1] A[i]=3×A[i-1]-2×A[i-2] (i1) 求A[N] 答案模1000000007输出 N=10^9 Problem one Solution 即有 应用快速幂进行计算 快速幂可以在 的时间复杂度内计算出一个c阶矩阵的N次幂 快速幂 Problem one Solution 形如F[i]=A[1]*F[i-1]+A[2]*F[i-2]+...+A[c]*F[i-c]的方程均可以利用矩阵乘法和快速幂进行优化 直接求解的时间复杂度为 使用矩阵乘法的时间复杂度为 适用c较小而N较大的情况 Problem two 在一个古老的国家对数字有这样的规定:这个国家适用0,1,2,3,4,5,6,7,8,9这10个数字,但规定有P个整数对(xi,yi)(0=xi,yi=9)不能连续出现。 一个整数对(xi,yi)表示在一个数中,xi的后面不能紧跟着yi 现在我们要知道在这个规定下,第K小的正整数的前50位是多少。 K=2*10^9 Problem two Solution 不妨设f[i,j]表示i位数,第1位为j的数的个数 则 注意到位数会很大 二分答案的位数t,从依次计算f[t],f[t-1],...,f[t-50],以确定每一位的值 时间复杂度 Problem three 给一张N个点的有向图 每条边的权值是1~5之间的整数 求从S走到T长度为K的路径条数 答案模1000003输出 N=10 K=10^9 Problem three Solution 有如下重要结论: 考虑一张无权的邻接矩阵A 设B=A^2,则Bij表示从i点到j点,走过两条边的路径条数 稍加扩展即可得到: 设C=A^k,则Cij表示从i点到j点,走过k条边的路径条数 这是路径长度为1的情况 由于路径长度为1~5之间的整数,可以拆点后再使用上述结论 时间复杂度

文档评论(0)

docindpp + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档