BZOJ 2901: 矩阵求和
2901: 矩阵求和
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 411 Solved: 216
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1 9 8
3 2 0
1 8 3
9 8 4
0 5 15
1 9 6
1 1 3 3
2 3 1 2
Sample Output
388
【数据规模和约定】
对30%的数据满足,n <= 100。
对100%的数据满足,n <= 2000,m <= 50000,输入数据中矩阵元素 < 100,a,b,c,d <= n。
HINT
Source
经典题目,然后我忘了怎么做了,然后就被高一学长教做人了……
不妨设答案为乘积矩阵的第a行到第c行,第b行到第d行的元素之和。
$$\sum_{i=a}^{c} \sum_{j=b}^{d} \sum_{k=1}^{n} A_{i,k}B_{k,j}$$
$$\sum_{k=1}^{n} \sum_{i=a}^{c} \sum_{j=b}^{d} A_{i,k}B_{k,j}$$
$$\sum_{k=1}^{n} (\sum_{i=a}^{c}{A_{i,k}}) (\sum_{j=b}^{d}{B_{k,j}})$$
然后对两个矩阵进行前缀和预处理,每次查询的时候暴力枚举k就可以。卡常技巧也是很重要的……
#include <cstdio> #define siz (1 << 20)
#define frd fread(hd = buf, 1, siz, stdin)
#define gtc (hd == tl ? (frd, *hd++) : *hd++) char buf[siz];
char *hd = buf + siz;
char *tl = buf + siz; inline int nextInt(void)
{
int r = , c = gtc; for (; c < ; c = gtc); for (; c > ; c = gtc)
r = r * + c - ''; return r;
} #undef siz
#undef frd
#undef gtc #define mxn 2005
#define mxm 50005
#define lnt long long
#define rnt register int int n, m;
lnt A[mxn][mxn];
lnt B[mxn][mxn]; signed main(void)
{
#ifndef ONLINE_JUDGE
freopen("in", "r", stdin);
#endif n = nextInt();
m = nextInt(); for (rnt i = ; i <= n; ++i)
for (rnt j = ; j <= n; ++j)
A[i][j] = nextInt() + A[i - ][j]; for (rnt i = ; i <= n; ++i)
for (rnt j = ; j <= n; ++j)
B[i][j] = nextInt() + B[i][j - ]; while (m--)
{
static int a, b, c, d; a = nextInt();
c = nextInt();
b = nextInt();
d = nextInt(); #define swap(x, y) (x ^= y ^= x ^= y) if (a > b)swap(a, b);
if (c > d)swap(c, d); lnt ans = ; for (rnt k = ; k <= n; ++k)
ans += (A[b][k] - A[a - ][k]) * (B[k][d] - B[k][c - ]); printf("%lld\n", ans);
}
}
@Author: YouSiki
BZOJ 2901: 矩阵求和的更多相关文章
- 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_矩阵求和_前缀和
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列.求两个矩阵之和. 重 ...
- hdu 1588(Fibonacci矩阵求和)
题目的大意就是求等差数列对应的Fibonacci数值的和,容易知道Fibonacci对应的矩阵为[1,1,1,0],因为题目中f[0]=0,f[1]=1,所以推出最后结果f[n]=(A^n-1).a, ...
- [BZOJ 2738] 矩阵乘法 【分块】
题目链接:BZOJ - 2738 题目分析 题目名称 “矩阵乘法” 与题目内容没有任何关系..就像VFK的 A+B Problem 一样.. 题目大意是给定一个矩阵,有许多询问,每次询问一个子矩阵中的 ...
- [BZOJ]1059 矩阵游戏(ZJOI2007)
虽然说是一道水题,但小C觉得还是挺有意思的,所以在这里mark一下. Description 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白 ...
随机推荐
- (转)Linux SSH配置和禁止Root远程登陆设置
原文 一.修改vi /etc/ssh/sshd_config 文件 1.修改默认端口:默认Port为22,并且已经注释掉了:修改是把注释去掉,并修改成其它的端口. 2.禁止root用户远程登陆:修改P ...
- React 开发注意事项
引用自定义组件的时候,组件名称首字母大写 import CustomComponent from "./customComponent "; render(){ return ( ...
- OI骗分神器——模拟退火算法
前言&&为什么要学模拟退火 最近一下子学了一大堆省选算法,所以搞一个愉快一点的东西来让娱乐一下 其实是为了骗到更多的分,然后证明自己的RP. 说实话模拟退火是一个集物理与IT多方面知识 ...
- sklearn学习笔记之简单线性回归
简单线性回归 线性回归是数据挖掘中的基础算法之一,从某种意义上来说,在学习函数的时候已经开始接触线性回归了,只不过那时候并没有涉及到误差项.线性回归的思想其实就是解一组方程,得到回归函数,不过在出现误 ...
- CF1153F Serval and Bonus Problem FFT
CF1153F Serval and Bonus Problem 官方的解法是\(O(n ^ 2)\)的,这里给出一个\(O(n \log n)\)的做法. 首先对于长度为\(l\)的线段,显然它的答 ...
- ubuntu12.04安装mininet
网上安装mininet教程有很多,都是通过git命令安装,但有一个坑,安装到./install.sh时会报错,记录下来 1.通过git 下载mininet git clone git://github ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(六)一定要RESTful吗?
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 这个问题看起来就显得有些萌,或者说类似的问题都有些不靠 ...
- NTP服务部署和测试
1. 概述2. 部署3. 配置4. 客户端配置4.1 客户端安装ntpdate4.2 同步设置 1. 概述 本篇博客主要记录如何部署一台NTP服务器,用于内网时间同步. 时间服务器对于集群内部节点之间 ...
- macaca使用中问题解决方法整理
报告老板:很多同学在搭建macaca的环境时候,出现了各种问题,尤其是使用windows的同学,更是复杂且费劲的要命,我这里针对一些遇到的坑,按照从头的搭建开始说起,如下 基本的搭建条件要满足基础环境 ...
- OpenGL学习(1)——创建窗口
这是我的第一篇博客,试着记录学习OpenGL的过程.使用的教程:LearnOpenGL,系统:Deepin 15.9.3,IDE:Qt Creator. 添加头文件 创建窗口用到两个库:GLFW和GL ...