zoukankan      html  css  js  c++  java
  • 常系数齐次线性递推

    问题:求长度为k的常系数齐次线性递推式Σai*hj->hi+j的第n项hn,可以写成(HA^n),A是k阶矩阵

    核心:对(A^n)取模变成(sum_{i=0}^{k-1} c_iA^i),加上H变为(sum_{i=0}^{k-1} c_ih_i)

    问题是找一个模之后不变的式子,即某个多项式f(A)=0

    凯莱-哈密顿定理:A的特征多项式f(λ)满足f(A)=0

    特征矩阵:λI-A

    特征多项式:|λI-A|,把λ看作未知数,化简得到(f(lambda)=lambda^k-sum_i a_ilambda^{k-i})

    之后把A看作未知数,用A^n模特征多项式即可化简

    优化:若只有h0=1则可以求A^(n+k-1),这样每项取的就是当前H的最后一位,而模特征多项式之后的HA^i就只有HA^(k-1)是1其他都是0

    (其实就是把h0放到h[k-1]的位置上,最后求h[n+k-1],一样还是取A最左边,所以转移n+k-1次,最后只有h[k-1]要算

    直接暴力倍增取模是(O(k^2log n)),用多项式优化取模做到(O(klog klog n))

  • 相关阅读:
    Lightoj 1422
    BZOJ 1801 [AHOI 2009] 中国象棋(DP)
    [SCOI2008]天平
    [SCOI2008]奖励关
    [USACO08JAN]haybale猜测Haybale Guessing
    [Sdoi2016]征途
    [SHOI2014]概率充电器
    [USACO08JAN]电话线Telephone Lines
    [HEOI2016]排序
    友好的生物
  • 原文地址:https://www.cnblogs.com/gmh77/p/14561086.html
Copyright © 2011-2022 走看看