博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1898: [Zjoi2005]Swamp 沼泽鳄鱼(矩阵快速幂)
阅读量:5944 次
发布时间:2019-06-19

本文共 1999 字,大约阅读时间需要 6 分钟。

题意

Sol

不难发现吃人鱼的运动每\(12s\)一个周期

所以暴力建12个矩阵,放在一起快速幂即可

最后余下的部分暴力乘

#include
using namespace std;const int MAXN = 52, mod = 10000;inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();} while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * f;}int N, M, S, T, K, mp[MAXN][MAXN], pos[MAXN];int add(int x, int y) { if(x + y < 0) return x + y + mod; return x + y >= mod ? x + y - mod : x + y;}int add2(int &x, int y) { if(x + y < 0) x = x + y + mod; else x = (x + y >= mod ? x + y - mod : x + y);}int mul(int x, int y) { return 1ll * x * y % mod;}struct Ma { int m[MAXN][MAXN]; Ma() { memset(m, 0, sizeof(m)); } Ma operator * (const Ma &rhs) const { Ma ans; for(int k = 1; k <= N; k++) for(int i = 1; i <= N; i++) for(int j = 1; j <= N; j++) add2(ans.m[i][j], mul(m[i][k], rhs.m[k][j])); return ans; }}a[15], bg;Ma MatrixFp(Ma a, int p) { Ma base; for(int i = 1; i <= N; i++) base.m[i][i] = 1; while(p) { if(p & 1) base = base * a; a = a * a; p >>= 1; } return base;}int main() { N = read(); M = read(); S = read() + 1; T = read() + 1; K = read(); for(int i = 1; i <= M; i++) {int x = read() + 1, y = read() + 1; bg.m[x][y]++; bg.m[y][x]++;} int fn = read(); for(int i = 1; i <= 12; i++) a[i] = bg; for(int i = 1; i <= fn; i++) { int num = read(); for(int j = 1; j <= num; j++) pos[j] = read() + 1; for(int j = 1; j <= 12; j++) for(int k = 1; k <= N; k++) a[j].m[k][pos[j % num + 1]] = 0; } Ma res = a[1]; //for(int i = 1; i <= N; i++) res.m[i][i] = 1; for(int i = 2; i <= 12; i++) res = res * a[i]; res = MatrixFp(res, K / 12); for(int i = 1; i <= K % 12; i++) res = res * a[i]; printf("%d\n", res.m[S][T]); return 0;}/*6 8 1 5 3330 22 11 00 55 11 44 33 533 0 5 12 1 24 1 2 3 4 */

转载地址:http://iswxx.baihongyu.com/

你可能感兴趣的文章
充电电池和充电时间说明
查看>>
输出昨天的当前时刻
查看>>
字段为NULL导致MyBatis在Oracle上执行SQL报错,无效的列类型
查看>>
知识点2-对二进制的运用
查看>>
PAT 1102 Invert a Binary Tree[比较简单]
查看>>
理解 JavaScript 作用域和作用域链
查看>>
Beta冲刺提交-星期四
查看>>
人工神经网络
查看>>
信用分计算(自研)
查看>>
055——VUE中vue-router之路由参数的随意设置与伪静态链接地址处理:
查看>>
迭代器
查看>>
性能压测,SQL查询异常
查看>>
JMessage Android 端开发详解
查看>>
Console命令详解,让调试js代码变得更简单
查看>>
一本通 1285:最大上升子序列和
查看>>
关于UseSubmitBehavior和OnClientClick同时使用,导致无法触发后台事件的问题
查看>>
《小岛经济学--鱼、美元和经济的故事》Digest
查看>>
深入浅出 消息队列 ActiveMQ(转)
查看>>
oracle client server那点事
查看>>
坐飞机的一个现象
查看>>