矩阵快速幂——max JZOJ(GMOJ)6309 完全背包
前置知识
矩阵快速幂
是可以自己新定义运算的,
只要满足结合律即可
如新定义运算"矩阵max法"(我瞎编的名字)
以下是运算规则
C = A m a x B C i , j = M A X k = 1 n { A i , k + B k , j } C=A \: \; max \: \; B \\C_{i,j}=MAX^n_{k=1}\left\{ A_{i,k}+B_{k,j}\right\} C=AmaxBCi,j=MAXk=1n{ Ai,k+Bk,j}
关于结合律的证明
令 D = B m a x C E = A m a x D = A m a x ( B m a x C ) D=B\;max\;C \\ E=A \;max\; D=A \;max\;(B\;max\;C) D=BmaxCE=AmaxD=Amax(BmaxC)
则
E i , j = M a x k = 1 n { A i , k + D k , j } = M a x k = 1 n { A i , k + M A X l = 1 n { B k , l + C l , j } } = M a x k = 1 n { M A X l = 1 n { A i , k + B k , l + C l , j } } = M a x k = 1 n { M A X l = 1 n { A i , k + B k , l } + C l , j } E_{i,j}\\ =Max^n_{k=1}\left\{A_{i,k}+D_{k,j}\right\}\\ =Max^n_{k=1}\left\{A_{i,k}+MAX^n_{l=1}\left\{B_{k,l}+C_{l,j}\right\}\right\}\\ =Max^n_{k=1}\left\{MAX^n_{l=1}\left\{A_{i,k}+B_{k,l}+C_{l,j}\right\}\right\}\\ =Max^n_{k=1}\left\{MAX^n_{l=1}\left\{A_{i,k}+B_{k,l}\right\}+C_{l,j}\right\} Ei,j=Maxk=1n{
Ai,k+Dk,j}