HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】
难度上。,,确实。。。不算难
问题是有个矩阵运算的优化
题目是说给个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;
}
}
HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】的更多相关文章
- 【杂题总汇】HDU多校赛第十场 Videos
[HDU2018多校赛第十场]Videos 最后一场比赛也结束了…… +HDU传送门+ ◇ 题目 <简要翻译> 有n个人以及m部电影,每个人都有一个快乐值.每场电影都有它的开始.结束时间和 ...
- 牛客网多校赛第9场 E-Music Game【概率期望】【逆元】
链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 2015 多校赛 第五场 1010 (hdu 5352)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5352 看题看得心好累. 题目大意: 给出 n 个点,依次执行 m 次操作:输入“1 x”时,表示将与 ...
- hdu 5373 The shortest problem(杭电多校赛第七场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5373 The shortest problem Time Limit: 3000/1500 MS (J ...
- hdu 5328 Problem Killer(杭电多校赛第四场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5328 题目大意:找到连续的最长的等差数列or等比数列. 解题思路:1.等差等比的性质有很多.其中比较重 ...
- hdu 5319 Painter(杭电多校赛第三场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5319 Painter Time Limit: 2000/1000 MS (Java/Others) ...
- hdu 5326 Work(杭电多校赛第三场)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5326 Work Time Limit: 2000/1000 MS (Java/Others) M ...
- 2015 多校赛 第五场 1006 (hdu 5348)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5348 题目大意:给出一幅无向图,问是否存在一种方案,使得给每条边赋予方向后,每个点的入度与出度之差小于 ...
- 2015 多校赛 第三场 1002 (hdu 5317)
Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more i ...
随机推荐
- Tool-Java:Spring Tool Suite
ylbtech-Tool-Java:Spring Tool Suite Spring Tool Suite 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 0. ...
- 713C
费用流 并没有想出来构图方法 我们设立源汇,其实我们关心的是相邻两个值的差值,如果差值小于0说明需要长高,那么向汇点连边差值,说明需要修改,如果差大于零,那么由源点连边差值,说明可以提供修改空间,再由 ...
- APPStore 发布流程及证书申请
最新的 iOS 申请证书与发布流程(2016.7) 今天刚好客户定制的APP需要上架,也提供了新的开发者账号,所以就顺带把申请证书与发布流程写一遍. 证书是什么? 上面这个就是我们申请好证书后,下载到 ...
- 12.0&12.1 Xcode开发包
12.1开发包下载链接 12.0开发包下载链接 12.1(16B91)开发包下载链接 Finder打开后,按command+shift+G前往这个地址: /Applications/Xcode.app ...
- angular js 球星
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- oracle排序union和union all区别
是这样的,表格中有几个属性,比如age吧是之一,age是字符类型的数字,select之间由union连接,此时是无法对前面的select语句进行order by的,也就是无法排序,无法达成我要的按ag ...
- 省市区县的sql语句——城市
/*SQLyog v10.2 MySQL - 5.5.48 : Database - 省市县****************************************************** ...
- Mysql分组求和&LIMIT
分组求和mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY na ...
- HDU_1729_sg函数(dfs)
Stone Game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- IDEA中使用Database管理工具
以下内容来自我的知乎回答IntelliJ IDEA中有什么让你相见恨晚的技巧? 说个冷门的,用IDEA操作数据库. 可能大部分不知道,IDEA是自带数据库管理工具的,类似于一个小型Navicat. 具 ...