zoukankan      html  css  js  c++  java
  • cojs QAQ的矩阵 题解报告

    题目描述非常的清晰

    首先我们考虑(A*B)^m的求法,这个部分可以参考BZOJ 杰杰的女性朋友

    我们不难发现(A*B)^m=A*(B*A)^(m-1)*B

    A*B是n*n的矩阵,而B*A是k*k的矩阵,这样就大大缩小了矩阵的大小

    因为矩阵乘法满足结合律,我们先对(B*A)做快速幂,之后乘一下就可以了

    之后我们考虑如果没有(i-1)^3的这个系数怎么求G(i)的前缀和

    因为矩阵乘法满足分配率,我们利用矩阵倍增((B*A)^0+(B*A)^1……+(B*A)^(m-1))之后乘一下就可以了

    之后我们发现把系数配进去我们需要求sigma(i^3*(B*A)^i)这个矩阵

    我们考虑sigma(i*(B*A)^i)的求法

    设F(i)=i*(B*A)^i,H(i)=(B*A)^i

    F(i)= j*(B*A)^i + (i-j) *(B*A)^i = (j*(B*A)^j * (B*A)^(i-j)) + ((i-j)*(B*A)^(i-j) *(B*A)^j)

    F(i)=F(j)*H(i-j)+F(i-j)*H(j)

    同理我们将i^2转化成(j+(i-j))^2之后展开会得到i^2*(B*A)^i的公式

    然后同样转化i^3也可以得到类似的公式

    这样我们重新定义一下矩阵乘法就可以同样利用矩阵倍增求出sigma(i^3*(B*A)^i)了

    这样就可以得到答案了

  • 相关阅读:
    Eureka实现注册与发现
    SpringBoot之彩色输出
    SpringBoot之简单日志配置
    SpringBoot之文件读取
    springboot之banner
    记一下一个我误解的小特性
    spring4新特性-泛型依赖注入
    boot之mybatis
    springmvc之单元测试(MockMvc)-独立测试
    git ignore
  • 原文地址:https://www.cnblogs.com/joyouth/p/5540416.html
Copyright © 2011-2022 走看看