2901: 矩阵求和

Time Limit: 20 Sec  Memory Limit: 256 MB
Submit: 411  Solved: 216
[Submit][Status][Discuss]

Description

给出两个n*n的矩阵,m次询问它们的积中给定子矩阵的数值和。

Input

第一行两个正整数n,m。
接下来n行,每行n个非负整数,表示第一个矩阵。
接下来n行,每行n个非负整数,表示第二个矩阵。
接下来m行,每行四个正整数a,b,c,d,表示询问第一个矩阵与第二个矩阵的积中,以第a行第b列与第c行第d列为顶点的子矩阵中的元素和。

Output

对每次询问,输出一行一个整数,表示该次询问的答案。

Sample Input

3 2
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

661
388

【数据规模和约定】
对30%的数据满足,n <= 100。
对100%的数据满足,n <= 2000,m <= 50000,输入数据中矩阵元素 < 100,a,b,c,d <= n。

HINT

Source

[Submit][Status][Discuss]

经典题目,然后我忘了怎么做了,然后就被高一学长教做人了……

不妨设答案为乘积矩阵的第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就可以。卡常技巧也是很重要的……

 1 #include <cstdio>
 2
 3 #define siz (1 << 20)
 4 #define frd fread(hd = buf, 1, siz, stdin)
 5 #define gtc (hd == tl ? (frd, *hd++) : *hd++)
 6
 7 char buf[siz];
 8 char *hd = buf + siz;
 9 char *tl = buf + siz;
10
11 inline int nextInt(void)
12 {
13     int r = 0, c = gtc;
14
15     for (; c < 48; c = gtc);
16
17     for (; c > 47; c = gtc)
18         r = r * 10 + c - '0';
19
20     return r;
21 }
22
23 #undef siz
24 #undef frd
25 #undef gtc
26
27 #define mxn 2005
28 #define mxm 50005
29 #define lnt long long
30 #define rnt register int
31
32 int n, m;
33 lnt A[mxn][mxn];
34 lnt B[mxn][mxn];
35
36 signed main(void)
37 {
38 #ifndef ONLINE_JUDGE
39     freopen("in", "r", stdin);
40 #endif
41
42     n = nextInt();
43     m = nextInt();
44
45     for (rnt i = 1; i <= n; ++i)
46         for (rnt j = 1; j <= n; ++j)
47             A[i][j] = nextInt() + A[i - 1][j];
48
49     for (rnt i = 1; i <= n; ++i)
50         for (rnt j = 1; j <= n; ++j)
51             B[i][j] = nextInt() + B[i][j - 1];
52
53     while (m--)
54     {
55         static int a, b, c, d;
56
57         a = nextInt();
58         c = nextInt();
59         b = nextInt();
60         d = nextInt();
61
62 #define swap(x, y) (x ^= y ^= x ^= y)
63
64         if (a > b)swap(a, b);
65         if (c > d)swap(c, d);
66
67         lnt ans = 0;
68
69         for (rnt k = 1; k <= n; ++k)
70             ans += (A[b][k] - A[a - 1][k]) * (B[k][d] - B[k][c - 1]);
71
72         printf("%lld\n", ans);
73     }
74 }

@Author: YouSiki

转载于:https://www.cnblogs.com/yousiki/p/6536949.html

BZOJ 2901: 矩阵求和相关推荐

  1. 输入挂(bzoj 2901: 矩阵求和)

    很少用输入挂,以为不超时就好了,但是这题貌似不用过不去啊 只好拿出来用了,当个模板 原理是用getchar()读入会比用scanf快一些 int Read() {int x = 0, f = 1;ch ...

  2. BZOJ2901: 矩阵求和

    题解:  对于表达式用前缀和优化 n^2预处理 n*m查询 #include <algorithm> #include <iostream> #include <cstr ...

  3. BZOJ 1176[Balkan2007]Mokia (cdq分治,矩阵加矩阵求和)

    BZOJ 1176[Balkan2007]Mokia (cdq分治,矩阵加矩阵求和) Description 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值. ...

  4. 2018第九届蓝桥杯C/C++ B国赛 —— 第六题:矩阵求和

    矩阵求和 经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作. 今天小明的任务是填满这么一张表: 表有 n 行 n 列,行和列的编号都从1算起. 其中第 i 行第 j 个元素的值是 g ...

  5. C语言用数组编程矩阵,二维数组—矩阵求和(C语言)

    昨天上机了,之前上机都觉得题目挺简单的,但昨天的题明显比以前难了好吗!字符串二维数组感觉也没教什么呀..所以我也做了蛮久,现依次把这几道题放在这里留作纪念. 题目1:请写一个程序,对于一个m行m列(2 ...

  6. 2018第九届蓝桥杯B组决赛题解第六题 矩阵求和

    标题:矩阵求和 经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作. 今天小明的任务是填满这么一张表: 表有 n 行 n 列,行和列的编号都从1算起. 其中第 i 行第 j 个元素的值 ...

  7. sum 矩阵求和 matlab

    matlab中针对的数据大多是以矩阵形式来处理,求和函数是sum 下面通过几个例子来介绍求和函数的应用: matlab中: a=sum(A)  %列求和 b=sum(A,2) %行求和 c=sum(A ...

  8. matlab div矩阵运算,【求助】多维矩阵求和运算!!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 4-D矩阵:B(:,:,i,j) 具体形式如下! 想对每j列进行对应项求和相加, 整了一上午都-- 谢谢大家! B(:,:,1,1) = 1.0e+010 ...

  9. bzoj#4555. [Tjoi2016Heoi2016]求和

    bzoj#4555. [Tjoi2016&Heoi2016]求和 题目描述 Solution 有一个关于第二类斯特林数的公式: {nm}=1m!∑i(mk)(m−k)n(−1)k\left\{ ...

最新文章

  1. nokia android 8,疑似诺基亚8再曝光:预装Android 8.0系统
  2. qt 制作记事本_23.QT记事本
  3. .bin 文件用excel文件打开_用python读Excel文件
  4. Python的基本语法汇总
  5. 物联卡的类型有几种,如何区分
  6. Activity使用Intent启动另一个Activity
  7. 广告公司测试软件题目,信息流广告测试题,看看你广告优化能力
  8. 火箭工作室c++小游戏——斗地主
  9. 纤亿通谈-单模和多模光纤跳线有哪些不同之处?
  10. 计算机考试成绩分析汇报,计算机考试成绩分析与总结.doc
  11. win10怎么查看自己笔记本电脑电池的损耗情况
  12. Windows下自动云备份思源笔记到Gitee
  13. 短视频矩阵/短视频SEO矩阵系统源码/系统搭建
  14. web前端培训—css源码笔记(二)【爱创课堂】
  15. 怎样卸载计算机更新程序,windows10升级程序卸载怎么操作_windows10升级程序怎样卸载删除-win7之家...
  16. Apple Lossless Audio Codec 苹果无损音频解码器
  17. C语言中chdir()使用
  18. 4G物联网卡的几点优势
  19. router学习(二): 路由导航守卫
  20. 2019文章分类汇总

热门文章

  1. 旅游地图制作_手把手教你用旅游神器App:谷歌地图
  2. 在QT框架下进行仿照PS图像调整功能设计(亮度对比度,色相饱和度及明度)
  3. 整理《我三年开发经验,从字节跳动抖音组离职后,一口气拿到15家公司Offer》
  4. Android实战——RecyclerView条目曝光埋点
  5. JavaEE常见面试问题
  6. MySQL sql语句
  7. 机器学习综述——机器学习理论基础与发展脉络
  8. 小米iot业务_一文看懂小米2019上半年财报:IoT平台连接设备达1.96亿台
  9. SWING HACKS电子书及范例代码
  10. win11玩游戏延迟_win11系统玩游戏卡顿性能提升小技巧