Codevs No.3147 矩阵乘法2
2016-06-01 17:33:30
题目链接: 矩阵乘法2 (Codevs No.3147)
题目大意:
给定两个大小相同的正方形矩阵A,B.多次询问,每次求乘后矩阵的一个子矩阵所有元素的和.
解法:
首先想到暴力.
预处理N^3,询问模拟扫,这常数简直瞬间爆炸啊
当然是可以优化的.
列出子矩阵的元素表达式,就会发现有一些元素//矩阵乘法2 (Codevs No.3147)
//矩阵乘法
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=2010;
int map1[maxn][maxn];
int map2[maxn][maxn];
long long ans;
int N,M;
int a,b,c,d;
int main()
{
scanf("%d %d",&N,&M);
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
scanf("%d",&map1[i][j]);
map1[i][j]+=map1[i-1][j];
}
}
for(int i=1;i<=N;i++)
{
for(int j=1;j<=N;j++)
{
scanf("%d",&map2[i][j]);
map2[i][j]+=map2[i][j-1];
}
}
for(int i=1;i<=M;i++)
{
ans=0;
scanf("%d %d %d %d",&a,&b,&c,&d);
for(int i=1;i<=N;i++)
{
int sumxmap2=map2[i][max(b,d)]-map2[i][min(b,d)-1];
int sumymap1=map1[max(a,c)][i]-map1[min(a,c)-1][i];
ans+=(long long)sumxmap2*sumymap1;
}
printf("%lld\n",ans);
}
return 0;
}的乘积可以做乘法分配律
所以直接放弃求出子矩阵的确切值,按照分配律的特点组合数据.
我们对A(乘法的时候乘行)进行列前缀和,对B(乘法的时候乘列)进行行前缀和
最后所有元素的和就可以表示成sigma((A[i][Dbound]-A[i][Ubound-1])*(B[i][Rbound]-B[i][Lbound-1]));
(Ubound,Dbound,Lbound,Rbound表示小矩阵的上下左右)
//矩阵乘法2 (Codevs No.3147)
//矩阵乘法
#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn=;
int map1[maxn][maxn];
int map2[maxn][maxn];
long long ans;
int N,M;
int a,b,c,d;
int main()
{
scanf("%d %d",&N,&M);
for(int i=;i<=N;i++)
{
for(int j=;j<=N;j++)
{
scanf("%d",&map1[i][j]);
map1[i][j]+=map1[i-][j];
}
}
for(int i=;i<=N;i++)
{
for(int j=;j<=N;j++)
{
scanf("%d",&map2[i][j]);
map2[i][j]+=map2[i][j-];
}
}
for(int i=;i<=M;i++)
{
ans=;
scanf("%d %d %d %d",&a,&b,&c,&d);
for(int i=;i<=N;i++)
{
int sumxmap2=map2[i][max(b,d)]-map2[i][min(b,d)-];
int sumymap1=map1[max(a,c)][i]-map1[min(a,c)-][i];
ans+=(long long)sumxmap2*sumymap1;
}
printf("%lld\n",ans);
}
return ;
}
Codevs No.3147 矩阵乘法2的更多相关文章
- Codevs No.1287 矩阵乘法
2016-06-01 16:53:23 题目链接: 矩阵乘法 (Codevs No.1287) 题目大意: 给你两个可乘矩阵a,b,求a*b 解法: 定义....... //矩阵乘法 (Codevs ...
- 矩阵乘法快速幂 codevs 1250 Fibonacci数列
codevs 1250 Fibonacci数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 定义:f0=f1=1 ...
- [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矩阵乘法系列
T1:矩阵乘法板子题,练手. #include <map> #include <set> #include <cmath> #include <ctime&g ...
- Codevs 1305 Freda的道路(矩阵乘法 DP优化)
1305 Freda的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description Freda要到Rainbow的城堡去玩了.我们可以认 ...
随机推荐
- 【原创】MySql 数据库导入导出(备份)
啥不说了,两周前刚刚做过mysql导入导出的结果现在又忘了.. 更可悲的是竟然同样的三篇blog,现在看起来还是如当初一样费劲,里面的内容..所以自己写个记录一下 环境:*nix 权限:有相关表的写读 ...
- 22.allegro中PCB打印设置[原创]
1. -- 2. 3. 4. ----
- Android开发之三种动画
转载:http://www.cnblogs.com/angeldevil/archive/2011/12/02/2271096.html http://www.lightskystreet.com/2 ...
- 爬虫技术(五)-- 模拟简单浏览器(附c#代码)
由于最近在做毕业设计,需要用到一些简单的浏览器功能,于是学习了一下,顺便写篇博客~~大牛请勿喷,菜鸟练练手~ 实现界面如下:(简单朴素版@_@||) button_go实现如下: private vo ...
- ha_innobase::rnd_next
/*****************************************************************//** Reads the next row in a table ...
- ASP.NET MVC 学习6、学习使用Code First Migrations功能,把Model的更新同步到DB中
参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-new-field-to-th ...
- 设置mysql的interactive_timeout和wait_timeout的值
1,为什么要重新设置这两个变量的值? 因为如果数据库默认这两个变量的值是8小时(即28800秒)如果在8小时之内没有连接到数据库,等下次再连的时候就会抛连接超时,或连接关闭这样的异 常,但是多连接几次 ...
- Linux find xargs rm .orig
/********************************************************************* * Linux find xargs rm .orig * ...
- Java [leetcode 2] Add Two Numbers
问题描述: You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- 关于Android Studio升级到2.0后和Gradle插件不兼容的问题
今天升级AS到2.0后,用AS在真机上调试,发现报了如下错误: This version of Android Studio is incompatible with the Gradle Plugi ...