zoukankan      html  css  js  c++  java
  • P5107 能量采集

    当我看到这道题的时候,我就感觉它和魔法值特别像,所以没做过的可以去做做,说不定会有什么新的发现。

    Solution:矩阵快速幂

    看见 (n) 的范围是 (1leq nleq 50) ,不难想到这道题要用到邻接矩阵。

    然后就可以用矩阵快速幂做这个题。构造一个 (n imes n) 的矩阵, (G_{i,j}) 代表 (i ightarrow j) 有是否一条有向边,有的话存储的则是 (i) 的出度的逆元,那么 (G) 就是我们的转移矩阵。把 (F) 一个 (1 imes n) 的列向量作为初始矩阵,只存储 (a_i) 。此时复杂度为 (O(qn^3log t))

    如果加上倍增预处理 (G^{2^i}) ,复杂度可降为 (O(n^3log t+qn^2log t))

    但此时的复杂度在脸黑的情况下还是过不了的,我们还需要优化,可以考虑将倍增中的二进制预处理改为更大的进制,设为 (z) 进制,则此时复杂度为 (O(n^3log_z t+qn^2log_z t)) 就可以过了

    (还有一些优化是优化常数,在这里不提了)

    注意:因为会流向自己,所以 (i ightarrow i) 也相当于有一条有向边,即在矩阵中也要转移

  • 相关阅读:
    java的原子类 AtomicInteger 实现原理是什么?
    Tomcat性能调优
    JVM性能调优
    vue下载和上传excle数据文件,解析excel文件数据并存在数据库中
    07----popo up 弹窗
    06----fiter
    05 ---批量操作
    04
    stark组件03
    stack组件03
  • 原文地址:https://www.cnblogs.com/jasony/p/13584333.html
Copyright © 2011-2022 走看看