[bzoj2901]矩阵求和
题目大意:给出两个$n\times n$的矩阵,$m$次询问它们的积中给定子矩阵的数值和。
题解:令为$P\times Q=R$
$$\begin{align*}
&\sum\limits_{i=a}^c\sum\limits_{j=b}^dR[i][j]\\
=&\sum\limits_{i=a}^c\sum\limits_{j=b}^d\sum\limits_{k=1}^nP[i][k]\cdot Q[k][j]\\
=&\sum\limits_{k=1}^n(\sum\limits_{i=a}^cP[i][k])\cdot (\sum\limits_{j=b}^dQ[k][j])\\
=&\sum\limits_{k=1}^n(sumP[c][k]-sumP[a-1][k])(sumQ[k][d]-sumQ[k][b-1])\\
\end{align*}$$
卡点:无
C++ Code:
#include <cstdio>
#define int long long
#define maxn 2005
using namespace std;
int n, Q, a, b, c, d, ans;
int p[maxn][maxn], q[maxn][maxn];
int sp[maxn][maxn], sq[maxn][maxn];
inline void swap(int &a, int &b) {a ^= b ^= a ^= b;}
signed main() {
scanf("%lld%lld", &n, &Q);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) scanf("%lld", &p[i][j]), sp[i][j] = sp[i - 1][j] + p[i][j];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) scanf("%lld", &q[i][j]), sq[i][j] = sq[i][j - 1] + q[i][j];
}
while (Q --> 0) {
scanf("%lld%lld%lld%lld", &a, &b, &c, &d);
if (a > c) swap(a, c);
if (b > d) swap(b, d);
ans = 0;
for (int i = 1; i <= n; i++) ans += (sp[c][i] - sp[a - 1][i]) * (sq[i][d] - sq[i][b - 1]);
printf("%lld\n", ans);
}
return 0;
}
[bzoj2901]矩阵求和的更多相关文章
- poj 1195:Mobile phones(二维树状数组,矩阵求和)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 14489 Accepted: 6735 De ...
- poj 1195:Mobile phones(二维线段树,矩阵求和)
Mobile phones Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 14391 Accepted: 6685 De ...
- UVA 11149-Power of Matrix(等比矩阵求和)
给定一个矩阵A 要求A + A^2 + A^3 +…. A^k: 对于到n的等比矩阵求和 如果n是偶数: 如果n是奇数: #include<stdio.h> #include<s ...
- BZOJ 2901: 矩阵求和
2901: 矩阵求和 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 411 Solved: 216[Submit][Status][Discuss] ...
- BZOJ_2901_矩阵求和_前缀和
BZOJ_2901_矩阵求和_前缀和 Description 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. Input 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一 ...
- YTU 2442: C++习题 矩阵求和--重载运算符
2442: C++习题 矩阵求和--重载运算符 时间限制: 1 Sec 内存限制: 128 MB 提交: 1457 解决: 565 题目描述 有两个矩阵a和b,均为2行3列.求两个矩阵之和.重载运 ...
- YTU 2640: 编程题:运算符重载---矩阵求和
2640: 编程题:运算符重载---矩阵求和 时间限制: 1 Sec 内存限制: 128 MB 提交: 484 解决: 190 题目描述 /* 有两个矩阵a和b,均为2行3列.求两个矩阵之和. 重 ...
- 【BZOJ2901】矩阵求和
Description 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. Input 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数 ...
- 【bzoj2901】矩阵求和 前缀和
题目描述 给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和. 输入 第一行两个正整数n,m. 接下来n行,每行n个非负整数,表示第一个矩阵. 接下来n行,每行n个非负整数,表示第二个矩阵. ...
随机推荐
- 【vlan之四种方式链路认证组网]
---恢复内容开始--- 根据项目需求,搭建好如下拓扑图: 在[sysname]下配置给予协议的vlan vlan 1#vlan 10 protocol-vlan 0 ipv4#vlan 20 pro ...
- WebSocket协议 8 问
WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持.它使用方面.应用广泛,已经渗透到前后端开发的各种场景中. 对http一问一答中二式流程 ...
- 阻塞队列之LinkedBlockingQueue
概述 LinkedBlockingQueue内部由单链表实现,只能从head取元素,从tail添加元素.添加元素和获取元素都有独立的锁,也就是说LinkedBlockingQueue是读写分离的,读写 ...
- python七类之字符串
字符串 一.关键字:str 字符串是不可变的可迭代的数据类型 二.方法: name = 'alex uwu sir' .title #标题 使首字母大写 只要有特殊字符隔开,才能分别认为是多个单词 ...
- python-time模块、sys模块、os模块以及大量实例
模块 通俗的说模块就把一个已经写好的带有可使用的函数的文件,通过文件名进行导入,然后调用里面的函数等来完成所需功能,模块封装了你需要实现功能的代码,使用者只需调用即可,简化代码量,缩短编程时间. ti ...
- ruby $LOAD_PATH及类加载
$LOAD_PATH $LOAD_PATH 指的是Ruby读取外部文件的一个环境变量,其实和windows的环境变量是一个概念.Ruby会在这个环境变量的路径中读取需要require的文件,如果在环境 ...
- Android开发——View绘制过程源码解析(二)
0. 前言 View的绘制流程从ViewRoot的performTraversals开始,经过measure,layout,draw三个流程,之后就可以在屏幕上看到View了.上一篇已经介绍了Vi ...
- 【Consul】多数据中心
Consul的一个关键特性是支持多数据中心.consul架构中提到是构建低耦合的多个数据中心,一个数据中心的网络连接问题或故障不在其他数据中心的可用性.每个数据中心都是独立运行,并且拥有私有的LAN ...
- SpringCloud项目,接口调用返回http 500 - Internal Server Error的错误
今天上班的时候,自己正在参与的Spring Cloud项目出现了问题,原本上周五还正常的项目突然所有接口调用都是返回http 500的错误. 项目的状态是在Eureka上可以看到对应微服务是在线状态, ...
- 浅谈 kubernetes service 那些事 (下篇)
欢迎访问网易云社区,了解更多网易技术产品运营经验. 五.K8s 1.8 新特性--ipvs ipvs与iptables的性能差异 随着服务的数量增长,IPTables 规则则会成倍增长,这样带来的问题 ...