HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】
2024-08-23 02:15:39
难度上。,,确实。。。不算难
问题是有个矩阵运算的优化
题目是说给个N*K的矩阵A给个K*N的矩阵B(1<=N<=1000 && 1=<K<=6),先把他们乘起来乘为C矩阵。然后算C^(N*N)
相当于
ABABABABABABAB...=(AB)^(N*N)
不如
A(BA)^(N*N-1)B
由于BA乘得K*K的矩阵,K是比較小的
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
int a[1111][1111];
int b[1111][1111];
int c[1111][1111];
int tmp[1111][1111];
int sum[1111][1111];
void TIMES(int K,int N,int M,int aa[][1111],int bb[][1111],int cc[][1111]){
memset(tmp,0,sizeof(tmp));
for(int i=1;i<=K;i++){
for(int j=1;j<=M;j++){
for(int k=1;k<=N;k++){
tmp[i][j]=(tmp[i][j]+aa[i][k]*bb[k][j]%6)%6;
}
}
}
for(int i=1;i<=K;i++)
for(int j=1;j<=M;j++)
cc[i][j]=tmp[i][j]%6;
}
void quick(int cc[][1111],int mi,int n){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) sum[i][j]=1;
else sum[i][j]=0;
while(mi){
if(mi&1)
TIMES(n,n,n,cc,sum,sum);
TIMES(n,n,n,cc,cc,cc);
mi>>=1;
}
}
int main(){
#ifndef ONLINE_JUDGE
freopen("G:/in.txt","r",stdin);
//freopen("G:/myout.txt","w",stdout);
#endif
int N,K;
while(~scanf("%d%d",&N,&K)){
if(N==0 && K==0) return 0;
for(int i=1;i<=N;i++){
for(int j=1;j<=K;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=1;i<=K;i++){
for(int j=1;j<=N;j++){
scanf("%d",&b[i][j]);
}
}
TIMES(K,N,K,b,a,c);
quick(c,N*N-1,K);
TIMES(N,K,K,a,sum,sum);
TIMES(N,K,N,sum,b,sum);
int ans=0;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
ans+=sum[i][j];
cout<<ans<<endl;
}
}
最新文章
- JDBC连接各种数据库的地址名称
- hdu 5876 (补图BFS) Sparse Graph
- struts2 DMI
- Java中的Set集合接口实现插入对象不重复的原理
- 如何查看windows xp系统的位数?
- jquery绑定回车键发送(登录)
- mysql数据库指令导入导出
- windows server 2012显示桌面图标
- HP quality center 9.0 邮件设置
- Android 7.1 WindowManagerService 屏幕旋转流程分析 (三)
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 &; 我的前后端开发简史
- 二、Java多人博客系统-演变
- Oarcle之视图
- jquery之find,filter,has对比
- Log4j2 + Maven的配置文件示例详解
- kafka学习总结之kafka核心
- 【应用安全】微软的安全开发生命周期(SDL)
- java中配置JPA方法
- Java初学者笔记二:关于类的常见知识点汇总
- 【转】VC中MessageBox与AfxMessageBox用法与区别
热门文章
- Java8新特性之Optional
- Anagram Groups(字符串)
- ul和li里面的list-style
- 【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
- mybatis parameterType报错:There is no getter for property named &#39;xxx&#39; in &#39;class java.lang.String&#39;
- A - Design Tutorial: Learn from Math(哥德巴赫猜想)
- Elasticsearch之更新(全部更新和局部更新)
- css选择器的综合使用
- 努比亚 Z17 mini s (Nubia NX589J) 解锁BootLoader 并刷入recovery ROOT
- Scala——面向对象和函数式编程语言