codevs矩阵乘法系列
T1:矩阵乘法板子题,练手。
#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long inline int gi()
{
bool b=; int r=; char c=getchar();
while(c<'' || c>'') { if(c=='-') b=!b; c=getchar(); }
while(c>='' && c<='') { r=r*+c-''; c=getchar(); }
if(b) return -r; return r;
} const int inf = 1e9+, N = ;
int f[][N][N],I,J,K; int main()
{
int i,j,k;
I=gi(), K=gi();
for (i=; i<=I; i++)
for (k=; k<=K; k++)
f[][i][k]=gi();
K=gi(), J=gi();
for (k=; k<=K; k++)
for (j=; j<=J; j++)
f[][k][j]=gi();
for (i=; i<=I; i++)
for (j=; j<=J; j++)
for (k=; k<=K; k++)
f[][i][j]+=f[][i][k]*f[][k][j];
for (i=; i<=I; i++)
{
for (j=; j<=J; j++)
printf ("%d ",f[][i][j]);
printf ("\n");
}
return ;
}
T2:矩阵乘法的小优化。
因为题目只要求答案矩阵的某一子矩阵所有元素和,根据矩乘定义可知:
C(i,j) = A(i,1) * B(1,j) + A(i,2) * B(2,j) + ... + A(i,n) * B(n,j) ——①
C(i,j+1) = A(i,1) * B(1,j+1) + A(i,2) * B(2,j+1) + ... + A(i,n) * B(n,j+1) ——②
C (i+1,j) = A(i+1,1) * B(1,j) + A(i+1,2) * B(2,j) + ... + A(i+1,n) * B(n,j) ——③
C(i+1,j+1) = A(i+1,1) * B(1,j+1) + A(i+1,2) * B(2,j+1) + ... + A(i+1,n) * B(n,j+1) ——④
① + ② + ③ + ④ 可得:
子矩阵所有元素和 = ∑ (A矩阵第 i 列之和 * B矩阵第 i 行之和)
(建议手玩一个小矩阵帮助理解)
所以可 O (n * m) 解决。
#include <map>
#include <set>
#include <cmath>
#include <ctime>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long inline ll gi()
{
bool b=; ll r=; char c=getchar();
while(c<'' || c>'') { if(c=='-') b=!b; c=getchar(); }
while(c>='' && c<='') { r=r*+c-''; c=getchar(); }
if(b) return -r; return r;
} const int inf = 1e9+, N = ;
int n,m;
ll f[][N][N],sum[N][N]; int main()
{
n=gi(), m=gi();
int i,j,x,y,q,w,a,b,c,d;
ll ans;
for (i=; i<=n; i++)
for (j=; j<=n; j++)
f[][i][j]=gi(), f[][i][j]+=f[][i-][j];
for (i=; i<=n; i++)
for (j=; j<=n; j++)
f[][i][j]=gi(), f[][i][j]+=f[][i][j-];
for (i=; i<m; i++)
{
x=gi(), y=gi(), q=gi(), w=gi(); ans=;
a=max(x,q), b=max(y,w), c=min(x,q), d=min(y,w);
for (j=; j<=n; j++)
ans+=(f[][a][j]-f[][c-][j]) * (f[][j][b]-f[][j][d-]);
printf ("%lld\n",ans);
}
return ;
}
codevs矩阵乘法系列的更多相关文章
- 矩阵乘法快速幂 codevs 1250 Fibonacci数列
codevs 1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1 ...
- Codevs No.3147 矩阵乘法2
2016-06-01 17:33:30 题目链接: 矩阵乘法2 (Codevs No.3147) 题目大意: 给定两个大小相同的正方形矩阵A,B.多次询问,每次求乘后矩阵的一个子矩阵所有元素的和. 解 ...
- Codevs No.1287 矩阵乘法
2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...
- [codevs 1482]路线统计(矩阵乘法)
题目:http://codevs.cn/problem/1482/ 分析:很像“经过K条边的最短路径条数”.但有所不同,那就是不是边数固定,而是路径总长度固定.看似不能用矩阵乘法了……但注意到每条边的 ...
- 矩阵乘法 codevs 1287 矩阵乘法
1287 矩阵乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象 ...
- Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)
1287 矩阵乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 小明最近在为线性代数而头疼, ...
- codevs 3332 数列 (矩阵乘法)
/* 裸地矩阵乘法 矩阵很好想的 1 1 0 0 0 1 1 0 0 */ #include<iostream> #include<cstring> #include<c ...
- CODEVS 1287 矩阵乘法
1287 矩阵乘法 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊) ...
- Codevs 1305 Freda的道路(矩阵乘法 DP优化)
1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...
随机推荐
- [转]UITableView全面解析
转自:http://www.cnblogs.com/kenshincui/p/3931948.html#mvc 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软 ...
- asp.net MVC最简单的增删查改!(详)
折腾了两天搞出来,但原理性的东西还不是很懂,废话不多说上图上代码 然后右键models,新建一个数据模型 注意我添加命名为lianxi 添加后如上 接下来在controllers添加控制器还有在Vie ...
- STM32F10x_StdPeriph_Driver_3.5.0(中文版).chm的使用
以熟悉的固件库函数说明中函数GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_IintTypeDef *GPIO_InitStructure)为例 GPIOA...G ...
- spring boot 添加mybatis,以及相关配置
首先在pom.xml文件里加入 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifa ...
- systemtap notes
systemtap notes -- 10 June 2014 1 Systemtap systemtap是红帽开发的一款分析工具,如果你需要使用的话,最好在redhat的系统上,在 Ubuntu上兼 ...
- html页面中拍照和上传照片那些事儿(二)
本文为原创,转载请注明出处: cnzt 文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6895352.html 本文主要说下iOS上传的照片在安卓机 ...
- CSS - 如何实现强制不换行、自动换行、强制换行
来源:http://www.cnblogs.com/mcat/p/4884644.html 强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: ...
- LVM创建
LVM介绍 PV(Physical Volume) - 物理卷 物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备 VG(Volume Group ...
- CentOS7 docker.repo 用阿里云Docker Yum源
yum安装软件的时候经常出现找不到镜像的情况 https://download.docker.com/linux/centos/7/x86_64/stable/repodata/repomd.xml: ...
- NPOI操作Excel 005:写入空Excel(Winform版)
前文写了一个BS版本号的导出Excel的样例(http://blog.csdn.net/yysyangyangyangshan/article/details/47904119).对于CS版在保存的地 ...