矩阵
gjghfd
这个作者很懒,什么都没留下…
展开
-
[ 欧拉定理 矩阵快速幂 ] BZOJ5118
如果直接用矩阵快速幂,复杂度是 O(n)O(n) 的。 因为1125899839733759是质数,所以可以用欧拉定理,求出 2n−1 mod11258998397337582^n-1 ~mod 1125899839733758 就好了。 时间复杂度 O(T⋅23⋅logn)O(T·2^3·\log n) 。#include<bits/stdc++.h> using namespace std;原创 2017-12-01 13:04:54 · 545 阅读 · 0 评论 -
bzoj1009 [ HNOI2008 ] -- KMP+矩阵乘法加速DP
令f[i][j]表示前i个字符,匹配到不吉利数字的第j位的方案数。 枚举第i+1位,通过KMP求出前i+1个字符可以匹配到不吉利数字的第几位,递推。 但由于n9,要用矩阵乘法加速。 f[i][j]=a[j][0]*f[i-1][0]+a[j][1]*f[i-1][1]+...+a[j][m-1]*f[i-1][m-1] 那么f[n]就是 an×f[0] 用快速幂,时间复杂度为O(log2n*m3)原创 2017-05-26 16:43:59 · 311 阅读 · 0 评论 -
[ DP KMP 矩乘优化 ] Codeforces946F Fibonacci String Subsequences
先对原串做一次KMP。 先考虑朴素的DP: 设 fi,jfi,jf_{i,j} 表示 F(x)F(x)F(x) 的前 iii 个字符能匹配到 sss 串第 jjj 位的方案数,结合KMP就可以转移了。 把状态用矩阵表示,对每个 F(i)F(i)F(i) 求出答案矩阵和转移矩阵,就可以递推求出答案了。 #include<bits/stdc++.h> using namespace...原创 2018-03-07 13:39:32 · 344 阅读 · 0 评论