[poj3735 Training little cat]【矩阵快速幂】
来源:互联网 发布:箪食壶浆以迎将军乎 编辑:程序博客网 时间:2024/05/17 23:00
好题重温。
唯一的坑点是k可能小于0…
#include <cstdio>#include <cstring>#include <algorithm>const int MAX = 101;typedef long long ll;struct mat { ll a[MAX][MAX]; mat() { memset(a, 0, sizeof(a)); } mat(int x) { memset(a, 0, sizeof(a)); for (int i = 0; i < MAX; ++i) { a[i][i] = 1; } } mat operator+(const mat& B)const { mat res; for (int i = 0; i < MAX; ++i) { for (int j = 0; j < MAX; ++j) { res.a[i][j] = a[i][j] + B.a[i][j]; } } return res; } mat operator*(const mat& B)const { mat res; for (int i = 0; i < MAX; ++i) { for (int j = 0; j < MAX; ++j) { if (a[i][j]) { for (int k = 0; k < MAX; ++k) { res.a[i][k] += a[i][j] * B.a[j][k]; } } } } return res; }} E(1);mat fastpow(mat a, int m) { mat res(1); while (m) { if (m & 1) res = res * a; m >>= 1; a = a * a; } return res;}int main() { char op; int c1, c2; int n, m, k; while (~scanf(" %d %d %d", &n, &m, &k)) { if (n == 0 && m == 0 && k == 0) break; mat cat, b(1); cat.a[n][0] = 1; while (k-- > 0) { scanf(" %c %d", &op, &c1); if (op == 'g') { ++b.a[c1-1][n]; } else if (op == 'e') { memset(b.a[c1-1], 0, sizeof(b.a[c1-1])); } else { scanf(" %d", &c2); std::swap(b.a[c1-1], b.a[c2-1]); } } cat = fastpow(b, m) * cat; printf("%lld", cat.a[0][0]); for (int i = 1; i < n; ++i) { printf(" %lld", cat.a[i][0]); } puts(""); } return 0;}
0 0
- [poj3735 Training little cat]【矩阵快速幂】
- POJ3735 Training little cats(矩阵快速幂)
- poj3735 Training little cats 矩阵快速幂 强大的应用
- poj3735 Training little cats(矩阵快速幂)
- Training little cats(poj3735,矩阵快速幂)
- POJ3735 Training little cats DP,矩阵快速幂,稀疏矩阵优化
- poj3735,矩阵快速幂
- poj3735,,矩阵快速幂
- POJ3735【矩阵快速幂】
- poj3735(矩阵快速幂)
- poj3735 Training little cats
- POJ3735-Training little cats
- poj3735-Training little cats
- 构造矩阵+矩阵快速幂 POJ3735
- poj 3745 Training little cats (矩阵运算+矩阵快速幂)
- POJ3735——Training little cats
- POJ--3735[Training little cats] 矩阵建模+快速幂
- poj 3735 Training little cats(构造矩阵快速幂)
- 统计大串中小串出现的次数
- C++ lambda 表达式
- 学习strcpy函数中的问题
- 非常好的理解遗传算法的例子
- 17个学术论文搜索引擎
- [poj3735 Training little cat]【矩阵快速幂】
- 【C语言】猴子吃桃问题
- 第六周项目六 复数模板类(3)
- HTTP请求的基本过程
- SOAP Webservice用AFNetworking实现请求
- 【1】数据库索引
- 使用BootCamp删除windows系统硬盘内存却没有改变
- Java删除文件夹和文件
- 虚函数和虚继承对sizeof的影响