BZOJ 4161 Shlw loves matrixI
来源:互联网 发布:海底捞排号软件 编辑:程序博客网 时间:2024/06/03 20:07
特征多项式优化常系数线性递推
详细内容请见《线性递推关系与矩阵乘法 》—叉姐
常见的矩阵乘法可以在
设这个矩阵是
然后我们用类似快速幂的方法就可以快速得到
时间复杂度降为
#include<cstdio>#include<cstring>#define K 2005#define MOD 1000000007using namespace std;namespace runzhe2000{ typedef long long ll; int n, k, a[K], f[K], base[K<<1], ans[K<<1], z[K<<1]; void mul(int *x, int *y) { memset(z, 0, sizeof(z)); for(int i = 0; i < k; i++) for(int j = 0; j < k; j++) (z[i+j] += (ll)x[i] * y[j] % MOD) %= MOD; for(int i = k+k-2; i >= k; i--) for(int j = 1; j <= k; j++) (z[i-j] += (ll)z[i] * a[j] % MOD) %= MOD; memcpy(x, z, sizeof(z)); } void main() { scanf("%d%d",&n,&k); for(int i = 1; i <= k; i++) scanf("%d",&a[i]); for(int i = 1; i <= k; i++) scanf("%d",&f[i]); base[1] = ans[0] = 1; for(int lim = n; lim; lim >>= 1) { if(lim & 1) mul(ans, base); mul(base, base); } ll r = 0; for(int i = 1; i <= k; i++) (r += (ll)f[i] * ans[i-1]) %= MOD; printf("%lld\n",(r+MOD)%MOD); }}int main(){ runzhe2000::main();}
0 0
- BZOJ 4161 Shlw loves matrixI
- bzoj4161 Shlw loves matrixI
- [bzoj4161]Shlw loves matrixI
- BZOJ 4162 shlw loves matrix II 拉格朗日插值+Cayley-Hamilton定理
- bzoj 3563: DZY Loves Chinese
- bzoj 3309 DZY Loves Math
- DZY Loves Math [Bzoj 3309]
- BZOJ 3309: DZY Loves Math
- bzoj 3309: DZY Loves Math
- bzoj 3316 JC loves Mkk
- BZOJ 3316: JC loves Mkk
- BZOJ 3309 DZY Loves Math
- bzoj 3563: DZY Loves Chinese
- bzoj 3563: DZY Loves Chinese
- BZOJ 3569 DZY Loves Chinese II 高斯消元
- 【线性筛】【bzoj 3309】: DZY Loves Math
- BZOJ 3560 DZY Loves Math V 数论
- BZOJ 3560 DZY Loves Math V
- 论text-align:center与margin:0 auto的区别。
- 4.man
- 迷宫的最短路径(深度bfs)
- BZOJ 3682 Phorni
- ubuntu查看系统版本和linux内核版本
- BZOJ 4161 Shlw loves matrixI
- WiFi debug log
- deepin 的free命令显示改进
- Centos常用工具安装
- java多线程
- HTML元素title里面和js里面几句话如何换行 格式代码是如何的?
- 洛谷 2480 [SDOI2010]古代猪文
- POJ 2492 A Bug's Life 简单并查集
- AtCoder agc007_f Shik and Copying String