• 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) 也相当于有一条有向边,即在矩阵中也要转移

  • 相关阅读:
    20170417成员运算符、身份运算符、布尔运算符
    20170417学习find、replace、abs三个函数
    shell 双中括号 双小括号
    man 命令
    awk 命令-对文本和数据进行处理
    shell-1-day
    shell---0-day
    /etc
    Selenium IDE使用
    python 自动化测试框架 pytest 和unittest 的区别
  • 原文地址:https://www.cnblogs.com/jasony/p/13584333.html
Copyright © 2020-2023  润新知