bzoj1898: [Zjoi2004]Swamp 沼泽鳄鱼
来源:互联网 发布:淘宝网每日好店 编辑:程序博客网 时间:2024/04/27 16:58
矩阵乘法
每12个单位时间是个循环
前K/12个单位时间用快速幂,后K%12个单位时间用裸矩阵乘法
#include <cstdio>#include <cstring>#define MAXN 53#define MOD 10000int n, m, s, t, nf;long T;int a[12][MAXN][MAXN];int b[MAXN][MAXN], tmp[MAXN][MAXN];void multiply(int a[MAXN][MAXN], int b[MAXN][MAXN], int f[MAXN][MAXN]){ memset(f, 0, sizeof(int) * MAXN * MAXN); for (int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) for (int k = 0; k < n; ++k) f[i][j] = (f[i][j] + a[i][k] * b[k][j] % MOD) % MOD;}void power(int a[MAXN][MAXN], int b, int f[MAXN][MAXN]){ if (b == 0) { memset(f, 0, sizeof(int) * MAXN * MAXN); for (int i = 0; i < n; ++i) f[i][i] = 1; return; } if (b == 1) { memcpy(f, a, sizeof(int) * MAXN * MAXN); return; } int t[MAXN][MAXN]; power(a, b / 2, f); multiply(f, f, t); if (b % 2 == 0) memcpy(f, t, sizeof(int) * MAXN * MAXN); else multiply(t, a, f);}int main(){ scanf("%d%d%d%d%ld", &n, &m, &s, &t, &T); memset(a, 0, sizeof(a)); while (m--) { int u, v; scanf("%d%d", &u, &v); for (int i = 0; i < 12; ++i) a[i][u][v] = a[i][v][u] = 1; } scanf("%d", &nf); while (nf--) { int l, x[4]; scanf("%d", &l); for (int i = 0; i < l; ++i) scanf("%d", &x[i]); for (int i = 0; i < 12; ++i) for (int j = 0; j < n; ++j) { a[i][j][x[(i + 1) % l]] = 0; a[i][x[i % l]][j] = 0; } } memcpy(b, a[0], sizeof(b)); for (int i = 1; i < 12; ++i) { multiply(b, a[i], tmp); memcpy(b, tmp, sizeof(b)); } power(b, T / 12, tmp); memcpy(b, tmp, sizeof(b)); for (int i = 0; i < T % 12; ++i) { multiply(b, a[i], tmp); memcpy(b, tmp, sizeof(b)); } printf("%d\n", b[s][t]); return 0;}
0 0
- bzoj1898: [Zjoi2004]Swamp 沼泽鳄鱼
- 【BZOJ1898】【Zjoi2004】Swamp 沼泽鳄鱼 矩阵乘法
- 【bzoj1898】[Zjoi2004]Swamp 沼泽鳄鱼 矩阵乘法+DP
- BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼
- bzoj1898: [Zjoi2005]Swamp 沼泽鳄鱼
- bzoj1898: [Zjoi2005]Swamp 沼泽鳄鱼
- [BZOJ1898] Swamp 沼泽鳄鱼 && 矩阵快速幂
- 【BZOJ1898】[Zjoi2005]Swamp 沼泽鳄鱼【DP】【矩阵乘法】
- [BZOJ1898][Zjoi2005]Swamp 沼泽鳄鱼(dp+矩阵优化)
- 矩阵——bzoj1898: [Zjoi2005]Swamp 沼泽鳄鱼
- SSL2512&BZOJ1898 沼泽鳄鱼
- [ZJOI2004]沼泽鳄鱼
- 矩阵乘法专题3——bzoj 1898 [Zjoi2004]Swamp 沼泽鳄鱼 题解
- [JZOJ2288] [BZOJ1898]【ZJOI2005】沼泽鳄鱼
- [ZJOI2004]沼泽鳄鱼(矩阵乘法)
- 1898: [Zjoi2005]Swamp 沼泽鳄鱼
- BZOJ-1898 Swamp 沼泽鳄鱼
- [BZOJ1898][ZJOI2005]沼泽鳄鱼(矩阵乘法)
- Word 2010:22个经典小技巧大放送
- 世界巨富如何管理时间
- 阿尔文而特太容易认同与56
- ACdream: ACfun
- HDU-#1232 畅通工程 (并查集)
- bzoj1898: [Zjoi2004]Swamp 沼泽鳄鱼
- HDU 2084数塔
- 算法竞赛入门经典(第2版)习题3-8 循环小数 Repeating Decimals UVa202
- 关于Tomcat,startup JAVA_HOME or JRE_HOME environment variable is not defined correctly解决方案
- bzoj1038: [ZJOI2008]瞭望塔
- ACdream原创群赛(16) J
- EMC 2014存储布局及十大新技术要点
- POJ 1459 Power Network
- 5.1.4 Binary Tree Level Order Traversal