【日常学习】codevs1287 矩阵乘法题解

转载请注明出处 [ametake版权所有]http://blog.csdn.net/ametake欢迎来看、

先上题目

题目描述 Description

小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容。

当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的。小明希望你来帮他完成这个任务。

现在给你一个ai行aj列的矩阵和一个bi行bj列的矩阵,要你求出他们相乘的积(当然也是矩阵)。

(输入数据保证aj=bi,不需要判断)

矩阵乘法的定义:

1. 矩阵A乘以B的时候,必须要求A的列数=B的行数,否则无法进行乘法运算。因此矩阵乘法也不满足交换律。

2. 设A是X*N的矩阵,B是N*Y的矩阵,用A的每一行乘以B的每一列,得到一个X*Y的矩阵。对于某一行乘以某一列的运算,我们称之为向量运算,即对应位置的每个数字相乘之后求和。

写为公式及:

C[i,j] = Sigma(A[i,k] * B[k,j])

输入描述 Input Description

输入文件共有ai+bi+2行,并且输入的所有数为整数(long long范围内)。

第1行:ai 和 aj

第2~ai+2行:矩阵a的所有元素

第ai+3行:bi 和 bj

第ai+3~ai+bi+3行:矩阵b的所有元素

输出描述 Output Description

输出矩阵a乘矩阵b的积(矩阵c)

样例输入 Sample Input

2 2

12 23

45 56

2 2

78 89

45 56

样例输出 Sample Output

1971 2356

6030 7141

数据范围及提示 Data Size & Hint

矩阵大小<=200*200

题目本身非常简单,在这里只是要说一下矩阵乘法的应用。

昨天在诸城一中夏令营听了高天宇前辈的讲解,矩阵乘法可以和倍增思想结合将重复计算的乘法提升到对数级别的复杂度。由于矩阵乘法满足结合律,因此求得转移矩阵后,可以先对转移矩阵做类似快速幂的翻倍,再与原矩阵相乘,可以极大的提高运行效率。

至于怎么构造转移矩阵= =机房快关门了也来不及说了= =如果有谁(估计没人)看到这篇文章想知道(估计还没人)的话可以私信我单独交流= =

其实主要是想吐槽几句= =

1.codevs昨天编译器各种故障是怎么回事三个编译器全挂了

2.codevs比赛juruo【谷歌输入法竟打不出来= =】只做出第一个题而且只过了样例而且第一遍还写错了而且还稀里糊涂调了一个小时= =

3.codevs第一次月赛怎么也得支持一下不过好麻烦啊= =感觉NOIP无力了ORZ

4.山东夏令营今年难度整体降低了一个B格= =什么情况这节奏严重不对= =目测不是省队爷低估了我们水平就是国家队爷高估了我们水平= =另,WYH神犇表示做老师很累= =我们听神犇您的课也很累= =

5.这几天蒙受GTY神犇光环,树状数组线段树RMQ矩阵乘法ST各种新技能···还没get= =但各种开眼= =

6.GTY神犇好萌~被WYH神犇各种无视(举了N词手都被54,我的存在感一定在上午用光了OTZ)

7.下午课各种悲了个剧= =想听的启发式搜索什么的各种被删= =重归基础二难度,隔壁LOI安之若素姑娘恐怕要哭晕在厕所了= =(打脸)

8.预祝TY君和CA队长诸位面基愉快~

9.见到洵二二好开心,XBOI新来的姑娘好萌,ZCYZ去年一群花姑娘不见了来的这只也好萌,山师附中的神犇们好沉默不知什么冤什么仇= =迄今各种愉快,有星空就更好了

10.明天也还要好好学习,不知不觉暑假过半了啊= =看到诸城一中1323孩子们这么努力我们也要加油啊= =

11.我十二点半火车回到家第二天一大早爬到诸城容易吗= =

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-23 19:20:28

【日常学习】codevs1287 矩阵乘法题解的相关文章

CODEVS1287 矩阵乘法

基础的矩阵乘法. Program CODEVS1287; const maxn=208; var k1,k2,k3,sum:int64; a,b,c:array[0..maxn,0..maxn] of int64; i,j,k:longint; begin readln(k1,k2); for i:=1 to k1 do for j:=1 to k2 do read(a[i,j]); readln(k2,k3); for i:=1 to k2 do for j:=1 to k3 do read(

算法导论学习——分治矩阵乘法

头文件 结构的定义 stdafx.h // stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 // #pragma once #include "targetver.h" #include <stdio.h> #include <tchar.h> // TODO: 在此处引用程序需要的其他头文件 #include <iostream> using namespace std; #defin

BZOJ2738:矩阵乘法——题解

http://www.lydsy.com/JudgeOnline/problem.php?id=2738 Description 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. Input 第一行两个数N,Q,表示矩阵大小和询问组数:接下来N行N列一共N*N个数,表示这个矩阵:再接下来Q行每行5个数描述一个询问:x1,y1,x2,y2,k表示找到以(x1,y1)为左上角.以(x2,y2)为右下角的子矩形中的第K小数. Output 对于每组询问输出第K小的数. Samp

矩阵乘法专题2——bzoj 1706 [usaco2007 Nov] relays 奶牛接力跑 题解

转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24960651 [原题] 1706: [usaco2007 Nov]relays 奶牛接力跑 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 340  Solved: 162 [Submit][Status] Description FJ的N(2 <= N <= 1,000,000)头奶牛选择了接力跑作为她们的日常锻炼项目.至于进行接力

矩阵乘法专题1——bzoj 1297 [SCOI2009] 迷路题解

题目链接 题意:给两个长度分别为n和m的序列,现在有两种操作:1.分别选择两个序列的一个非空前缀,切两个前缀的最后一位相同,删除之,得到1分(只累计),消耗e:2.直接删除两个序列,消耗值定于两个序列之前删除的元素个数之和,并且使得得到的分有效(之前没有有效分) 分析: 首先,问题其实就是转化成,进行若干次操作1,然后进行操作2 还要找到一个判别标准,来评判较优的状态(贪心) 每次的消耗值比较大,其实可以计算出最大的删除次数,这个值不是很大 状态表示: 简单的,一个状态可以表示为串A的位置.串B

矩阵乘法专题3——bzoj 1898 [Zjoi2004]Swamp 沼泽鳄鱼 题解

[原题] 1898: [Zjoi2004]Swamp 沼泽鳄鱼 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 425  Solved: 256 [Submit][Status] Description 潘塔纳尔沼泽地号称世界上最大的一块湿地,它地位于巴西中部马托格罗索州的南部地区.每当雨季来临,这里碧波荡漾.生机盎然,引来不少游客.为了让游玩更有情趣,人们在池塘的中央建设了几座石墩和石桥,每座石桥连接着两座石墩,且每两座石墩之间至多只有一座石桥.这

矩阵乘法专题4——bzoj 2326 [HNOI2011] 数学作业 题解

转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24963747 [原题] 2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 853  Solved: 473 [Submit][Status] Description [分析]我们按数字的位数来划分.对于K位数,我们就可以专门设计一个矩阵来计算. 然后就是注意细节了. [代码] #include

学习心得:《十个利用矩阵乘法解决的经典题目》from Matrix67

本文来自:http://www.matrix67.com/blog/archives/tag/poj大牛的博文学习学习 节选如下部分:矩阵乘法的两个重要性质:一,矩阵乘法不满足交换律:二,矩阵乘法满足结合律经典题目1 给定n个点,m个操作,构造O(m+n)的算法输出m个操作后各点的位置.操作有平移.缩放.翻转和旋转    这 里的操作是对所有点同时进行的.其中翻转是以坐标轴为对称轴进行翻转(两种情况),旋转则以原点为中心.如果对每个点分别进行模拟,那么m个操作总共耗时 O(mn).利用矩阵乘法可

【日常学习】【迭代加深搜索+哈希】codevs1004 四子连棋题解

转载请注明出处 [ametake版权所有]http://blog.csdn.net/ametake 题目描述 Description 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑白双方交替走棋,任意一方可以先走,如果某个时刻使得任意一种颜色的棋子形成四个一线(包括斜线),这样的状态为目标棋局. ● ○ ●   ○ ● ○ ● ● ○ ● ○ ○ ● ○   输入描述 Input