困难,。,真,,,不是太困难

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

您有权发言权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【矩阵运算+数学技巧】的更多相关文章

  1. HDU多校赛第9场 HDU 4965Fast Matrix Calculation【矩阵运算+数学小知识】

    难度上.,,确实...不算难 问题是有个矩阵运算的优化 题目是说给个N*K的矩阵A给个K*N的矩阵B(1<=N<=1000 && 1=<K<=6),先把他们乘起 ...

  2. hdu oj 1285 确定比赛名次

    hdu oj 1285 确定比赛名次 题目: 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  3. hdu 4965 Fast Matrix Calculation(矩阵高速幂)

    题目链接.hdu 4965 Fast Matrix Calculation 题目大意:给定两个矩阵A,B,分别为N*K和K*N. 矩阵C = A*B 矩阵M=CN∗N 将矩阵M中的全部元素取模6,得到 ...

  4. HDU 4965 Fast Matrix Calculation(矩阵高速幂)

    HDU 4965 Fast Matrix Calculation 题目链接 矩阵相乘为AxBxAxB...乘nn次.能够变成Ax(BxAxBxA...)xB,中间乘n n - 1次,这样中间的矩阵一个 ...

  5. i春秋CTF-“百度杯”CTF比赛 九月场 XSS平台

    “百度杯“CTF比赛 九月场 ###XSS平台   看了别人的wp才知道这里需要变数组引起报错然后百度信息收集,这一步在实战中我觉得是很有作用的,get到.       这里取百度rtiny,看别人w ...

  6. [i春秋]“百度杯”CTF比赛 十月场-Hash

    前言 涉及知识点:反序列化.代码执行.命令执行 题目来自:i春秋 hash  如果i春秋题目有问题可以登录榆林学院信息安全协会CTF平台使用 或者利用本文章提供的源码自主复现 [i春秋]"百 ...

  7. "百度杯"CTF比赛 十月场——EXEC

    "百度杯"CTF比赛 十月场--EXEC 进入网站页面 查看源码 发现了vim,可能是vim泄露,于是在url地址输入了http://21b854b211034489a4ee1cb ...

  8. HDU 4940(杭电更多的学校#7 1006) Destroy Transportation system(到处乱混)

    职务地址:pid=4940">HDU 4940 当时这个题一看就看出来了是网络流的最小割.然后就一直在想建图. .然后突然发现,应该要让T集合的数目最少,不然仅仅要有两个,那这两个的每 ...

  9. [2019HDU多校第一场][HDU 6578][A. Blank]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题目大意:长度为\(n\)的数组要求分别填入\(\{0,1,2,3\}\)四个数中的任意一个,有 ...

随机推荐

  1. windows服务的创建、安装和调试

    1.创建 windows服务 项目   文件 -> 新建项目 -> 已安装的模板 -> Visual C# -> windows ,在右侧窗口选择"windows 服 ...

  2. Java与C/C++有什么区别

    JDK包含JRE, 1-08: Helloworld: 01-08:classpath配置: 运行其它目录下的class文件: classpath一般不加分号,只找classpath下的文件: 后面加 ...

  3. Windows Server时间服务器配置方法

    1 时间服务器经常会碰到客户端机器需要和服务器在时间上保持同步,否则会出现各种问题,特别是有时间相关的触发功能的时候. 为解决各设备间时间统一的问题,我们可在网络中设置一台服务器使其作为基准时间,其它 ...

  4. hdu1159 LCS模板题

    题目分析 pid=1159">原题地址 最简单的最长公共子序列(LCS)问题的模板题了.不解释. ------------------------------------------- ...

  5. 【Unity Shaders】使用CgInclude让你的Shader模块化——Unity内置的CgInclude文件

    本系列主要參考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同一时候会加上一点个人理解或拓展. 这里是本书全部的插图. 这里是本书所需的代码 ...

  6. Rational Rose的四种视图介绍

    Rose模型中有四种视图:Use Case View(用例视图),Logical View(逻辑视图),Component View(组建视图)和Deployment View(配置视图). 用例视图 ...

  7. httpcomponents-client-ga(4.5)

    http://hc.apache.org/httpcomponents-client-ga/tutorial/html/   Chapter 1. Fundamentals Prev     Next ...

  8. hdu 4465 Candy(2012 ACM-ICPC 成都现场赛)

    简单概率题,可以直接由剩余n个递推到剩余0个.现在考虑剩余x个概率为(1-p)的candy时,概率为C(2 * n - x, x) * pow(p, n + 1)  *pow(1 - p, n - x ...

  9. 【filezilla】 ubuntu下安装filezilla

    sudo apt-get install filezilla '安装filezilla3.6.02 filezilla '执行filezilla

  10. POJ 3450 Corporate Identity KMP解决问题的方法

    这个问题,需要一组字符串求最长公共子,其实灵活运用KMP高速寻求最长前缀. 请注意,意大利愿父亲:按照输出词典的顺序的规定. 另外要提醒的是:它也被用来KMP为了解决这个问题,但是很多人认为KMP使用 ...