Fast Matrix Calculation HDU - 4965
- 题意:给出矩阵 ,为 的矩阵,矩阵 为 的矩阵, ,设矩阵 求出 各个元素和。
- 题解:可以发现的是乘一步 显然吃不消。但是,可以发现一个性质,即 比较小。 可以发现,如果 个 相乘,可以转化成 个 相乘,设结果为矩阵 ,那么最终结果即为 , 而求 是 和 是 的复杂度,可以接受。算 的复杂度是可用快速幂,即 ,然后最终 是 的复杂度,然后再乘 是 的复杂度。
最终复杂的度是 。 - 代码:
#include <iostream>
#include <cstring>
using namespace std;
typedef long long ll;
const int N = 1e3 + 9;
const ll mod = 6;
int n, m;
ll A[N][N], B[N][N], T[N][N],ans[N][N];
struct Matrix {
ll a[10][10];
Matrix(){memset(a, 0, sizeof a);}
Matrix operator*(Matrix rhs)const {
Matrix ret;
for (int i = 1; i <= m; i ++) {
for (int j = 1; j <= m; j++){
for (int k = 1; k <= m; k++) {
(ret.a[i][j] += (a[i][k] * rhs.a[k][j] % mod)) %= mod;
}
}
}
return ret;
}
void pr() {
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}
};
Matrix ksm (Matrix A, int kk) {
if (kk == 1)return A;
Matrix ret;
bool f = 0;
//cout << kk << "???";
while (kk) {
if (kk & 1) {
if (!f) {
ret = A;
f = 1;
// cout << "?";
} else
ret = ret * A;
}
kk >>= 1;
A = A * A;
}
return ret;
}
void solve() {
while (cin >> n >> m) {
if (n == 0 && m == 0)return;
Matrix C;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> A[i][j];
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
cin >> B[i][j];
}
}
for (int i = 1; i <= m; i ++) {
for (int j = 1; j <= m; j ++) {
for (int k = 1; k <= n; k++) {
(C.a[i][j] += B[i][k] * A[k][j] % mod)%=mod;
}
}
}
int kk = n * n-1;
Matrix M = ksm(C, kk);
memset(T, 0, sizeof T);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
for (int k = 1; k <= m; k++) {
(T[i][j] += A[i][k] * M.a[k][j] % mod) %= mod;
}
}
}
ll sum = 0;
memset(ans, 0, sizeof ans);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
for (int k = 1; k <= m; k++) {
(ans[i][j] += T[i][k] * B[k][j] % mod) %= mod;
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
sum += ans[i][j];
}
}
cout << sum << endl;
}
}
signed main() {
int t = 1;//cin >> t;
while (t--) {
solve();
}
}
分类:
线性代数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· DeepSeek+PageAssist实现本地大模型联网
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· 从 14 秒到 1 秒:MySQL DDL 性能优化实战