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矩阵乘法系列的更多相关文章

  1. 矩阵乘法快速幂 codevs 1250 Fibonacci数列

    codevs 1250 Fibonacci数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond   题目描述 Description 定义:f0=f1=1 ...

  2. Codevs No.3147 矩阵乘法2

    2016-06-01 17:33:30 题目链接: 矩阵乘法2 (Codevs No.3147) 题目大意: 给定两个大小相同的正方形矩阵A,B.多次询问,每次求乘后矩阵的一个子矩阵所有元素的和. 解 ...

  3. Codevs No.1287 矩阵乘法

    2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...

  4. [codevs 1482]路线统计(矩阵乘法)

    题目:http://codevs.cn/problem/1482/ 分析:很像“经过K条边的最短路径条数”.但有所不同,那就是不是边数固定,而是路径总长度固定.看似不能用矩阵乘法了……但注意到每条边的 ...

  5. 矩阵乘法 codevs 1287 矩阵乘法

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold       题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象 ...

  6. Codevs 1287 矩阵乘法&&Noi.cn 09:矩阵乘法(矩阵乘法练手题)

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 小明最近在为线性代数而头疼, ...

  7. codevs 3332 数列 (矩阵乘法)

    /* 裸地矩阵乘法 矩阵很好想的 1 1 0 0 0 1 1 0 0 */ #include<iostream> #include<cstring> #include<c ...

  8. CODEVS 1287 矩阵乘法

    1287 矩阵乘法  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊) ...

  9. Codevs 1305 Freda的道路(矩阵乘法 DP优化)

    1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...

随机推荐

  1. [Hihocoder 1289] 403 Forbidden (微软2016校园招聘4月在线笔试)

    传送门 #1289 : 403 Forbidden 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi runs a web server. Someti ...

  2. H5 折线图插件

    一.可以使用Highcharts,参考网址:https://api.hcharts.cn/highcharts: 二.可以使用Echarts,参考网址:http://echarts.baidu.com ...

  3. Jenkins持续部署-Windows环境持续部署探究1

    目录 Jenkins持续部署-Windows环境持续部署探究1 目录 前言 目的 方案流程 技术实现 PowerShell FTP上传插件 环境变量插件 脚本执行 远程调用 升级服务 启动服务 总结 ...

  4. 服务器Out of Memory

    之前有次把图片存储在数据库,结果读取时候报错了:Out of Memory.. 图片本来不应该存储在数据库中的,消耗内存太大,既然已经这样,那就先解决问题,不改存储方式. 如果一个应用程序为了提高性能 ...

  5. Android:BLE智能硬件开发详解

    目录 前言 BLE是个什么鬼 BLE中的角色分工 主要的关键词和概念 GATT(Generic Attribute Profile ) Characteristic Service Android如何 ...

  6. flask结合令牌桶算法实现上传和下载速度限制

    限流.限速: 1.针对flask的单个路由进行限流,主要场景是上传文件和下载文件的场景 2.针对整个应用进行限流,方法:利用nginx网关做限流 本文针对第一中情况,利用令牌桶算法实现: 这个方法:h ...

  7. [Cypress] install, configure, and script Cypress for JavaScript web applications -- part1

    Despite the fact that Cypress is an application that runs natively on your machine, you can install ...

  8. Vue 开发线路 资料 汇总

    线路 作者推荐学习线路 https://zhuanlan.zhihu.com/p/23134551 他人建议 https://www.cnblogs.com/smartXiang/p/6051086. ...

  9. phpExcel大数据量情况下内存溢出解决

    版本:1.7.6+ 在不进行特殊设置的情况下,phpExcel将读取的单元格信息保存在内存中,我们可以通过 PHPExcel_Settings::setCacheStorageMethod() 来设置 ...

  10. 这样看ACM是不是更好?

    如果搞ACM只是为了拿奖,为了保研,这样太功利,整个过程都会变得没意思.我说过我同时看中过程和结果. 其实ACM解题也不是那么没意思,每次AC都有一种非常棒的成就感,每个题目就像是一个解谜游戏,完成了 ...