难度上。,,确实。。。不算难

问题是有个矩阵运算的优化

题目是说给个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;
}
}

最新文章

  1. JDBC连接各种数据库的地址名称
  2. hdu 5876 (补图BFS) Sparse Graph
  3. struts2 DMI
  4. Java中的Set集合接口实现插入对象不重复的原理
  5. 如何查看windows xp系统的位数?
  6. jquery绑定回车键发送(登录)
  7. mysql数据库指令导入导出
  8. windows server 2012显示桌面图标
  9. HP quality center 9.0 邮件设置
  10. Android 7.1 WindowManagerService 屏幕旋转流程分析 (三)
  11. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 &amp; 我的前后端开发简史
  12. 二、Java多人博客系统-演变
  13. Oarcle之视图
  14. jquery之find,filter,has对比
  15. Log4j2 + Maven的配置文件示例详解
  16. kafka学习总结之kafka核心
  17. 【应用安全】微软的安全开发生命周期(SDL)
  18. java中配置JPA方法
  19. Java初学者笔记二:关于类的常见知识点汇总
  20. 【转】VC中MessageBox与AfxMessageBox用法与区别

热门文章

  1. Java8新特性之Optional
  2. Anagram Groups(字符串)
  3. ul和li里面的list-style
  4. 【NOI1999、LOJ#10019】生日蛋糕(搜索、最优化剪枝、可行性剪枝)
  5. mybatis parameterType报错:There is no getter for property named &#39;xxx&#39; in &#39;class java.lang.String&#39;
  6. A - Design Tutorial: Learn from Math(哥德巴赫猜想)
  7. Elasticsearch之更新(全部更新和局部更新)
  8. css选择器的综合使用
  9. 努比亚 Z17 mini s (Nubia NX589J) 解锁BootLoader 并刷入recovery ROOT
  10. Scala——面向对象和函数式编程语言