【ACM程序设计】前缀和
前缀和
前缀和是指某序列的前n项和,可以把它理解为数学上的数列的前n项和
作用: 一种预处理,求出的前缀和数组可以使得,输出原序列中从第l个数到第r个数和的时间复杂度变成了O(1) 。
一维前缀和
更实际的应用:利用前缀和数组我们可以得到第i项到第j项的和,比如:求原数列第4项到第9项的和。利用前缀和数组: S=sum[9]-sum[4-1]。
const int N=1e5+10;
int sum[N],a[N];
for(int i=1;i<=n;i++)
{
sum[i]=sum[i-1]+a[i];
}
第一节课——dfs、bfs、二分、尺取、前缀和、差分 - Virtual Judge (csgrandeur.cn)

#include <iostream>
using namespace std;
const int N = 1000;
long long a[N], sum[N];
int main()
{
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
sum[i] = sum[i - 1] + a[i];
}
while (q--)
{
int f, t;
cin >> f >> t;
cout << sum[t] - sum[f - 1] << endl;
}
}
二维前缀和

sum[ i ] [ j ] = sum[ i ] [ j - 1 ] + sum[ i - 1 ] [ j ] - sum[ i - 1 ] [ j - 1 ] + a[ i ] [ j ]
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];
更实际的应用:求a[ x1 ] [ y1 ]到a[ x2 ][ y2 ]

S = sum[x2][y2] - sum[x2][y1-1] - sum[x1-1][y2] + sum[x1-1][y1-1]
子矩阵求和
给出一个 n 行 m 列的矩阵,矩阵的每个位置有一个非负整数 a[ i ][ j ],有 q 次询问,每次询问求一个左上角为 (a,b),右下角为 (c,d) 的子矩阵的所有数之和。
输入格式
第一行两个整数 n,m,表示矩阵的行和列的大小。
接下来 n 行每行 m 个整数,为矩阵内容。
接下来一行为一个整数 q ,表示询问次数。
接下来 q 行每行 4 个整数 a,b,c,d,含义见题面。
输出格式
共 q 行,第 i 行为第 i 个询问的答案。
样例输入复制
3 5
1 2 3 4 5
3 2 1 4 7
2 4 2 1 2
3
1 1 3 5
2 2 3 3
1 1 3 3
样例输出复制
43
9
20
#include<iostream>
#include<vector>
using namespace std;
int n, m;
int s[1000][1000], sum[1000][1000];
int main()
{
int i, j, q, a, b, c, d;
cin >> n >> m;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
cin >> s[i][j];
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + s[i][j];
cin >> q;
while (q--)
{
cin >> a >> b >> c >> d;
cout << sum[c][d] + sum[a - 1][b - 1] - sum[a - 1][c] - sum[c][b - 1] << endl;
}
return 0;
}
【ACM程序设计】前缀和的更多相关文章
- 西南科技大学第十一届ACM程序设计大赛发言稿
西南科技大学第十一届ACM程序设计大赛发言稿 各位老师.志愿者及参赛选手: 大家好,我是来自计科学院卓软1301的哈特13,很荣幸今天能站在这里代表参赛选手发言. 回想起来,我参加ACM比赛已经快两年 ...
- 记第五届山东省ACM程序设计比赛——遗憾并非遗憾
记第五届山东省ACM程序设计比赛 5月10日上午9点半左右,我们的队伍从学校出发,一个多小时后到达本次比赛的地点-哈尔滨工业大学. 报道,领材料,吃午饭,在哈工大的校园里逛了逛,去主楼的自习室歇息了一 ...
- 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解
题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...
- 第13届 广东工业大学ACM程序设计大赛 C题 平分游戏
第13届 广东工业大学ACM程序设计大赛 C题 平分游戏 题目描述 转眼间又过了一年,又有一届的师兄师姐要毕业了. 有些师兄师姐就去了景驰科技实习. 在景驰,员工是他们最宝贵的财富.只有把每一个人 ...
- 哈尔滨工业大学(威海)第九届ACM程序设计竞赛 Virtual Youtuber
链接 [https://ac.nowcoder.com/acm/contest/624/G] 题意 其实题意说的辣鸡死了,没有说明确. y is the subsequences that its s ...
- nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)
题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...
- 2010山东省第一届ACM程序设计竞赛
休眠了2月了 要振作起来了!!... http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2155 因 ...
- UPC 2224 Boring Counting ★(山东省第四届ACM程序设计竞赛 tag:线段树)
[题意]给定一个长度为N的数列,M个询问区间[L,R]内大于等于A小于等于B的数的个数. [题目链接]http://acm.upc.edu.cn/problem.php?id=2224 省赛的时候脑抽 ...
- “玲珑杯”郑州轻工业学院第八届ACM程序设计大赛暨河南高校邀请赛-正式赛(总结)
这次轻院校赛,我们去了五个队,怀着打酱油的心态早早爬起来坐上校车出发了,由于昨晚室友打游戏,以及看视频大笑...没睡好,快1点才睡着,感觉特别困,车上没地方,睡不着,就在车上闭目养神,由于在新校区,不 ...
随机推荐
- eclipse启动指定jvm的版本
参阅:https://www.eclipse.org/forums/index.php/t/1105435/ https://wiki.eclipse.org/Eclipse.ini#-vm_valu ...
- 我对arguments.callee的理解
基本理解: 你怎么看待一个函数呢?又如何看待一个函数对象呢?函数和Function之间的关系到底是什么?我觉得理解这些对理解arguments.callee有所帮助. 先说说auguments.cal ...
- vue集成ckeditor富文本框,怎么获取CKEditor实例?
CKEDITOR 版本5 ,vue集成形式 vue集成ckeditor富文本框,由于不是通过js创建的富文本对象,所以,无法取得实例对象,官方说明 官方在builds-->Getting and ...
- vue3在组件上使用v-model
v-model用于在元素上创建双向数据绑定,负责监听用户输入事件来更新数据. v-model应用于输入框 <input v-model="searchText" /> ...
- spi协议
1. 概述 SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线.常规只占用四根线,节约了芯片管脚,PCB的布局省空间.现在越来越 ...
- MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)
CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...
- Linux系统下ifconfig命令使用及结果分析
Linux下网卡命名规律:eth0,eth1.第一块以太网卡,第二块.lo为环回接口,它的IP地址固定为127.0.0.1,掩码8位.它代表你的机器本身. 1.ifconfig是查看网卡的信息. if ...
- Vue.js 开发实践:实现精巧的无限加载与分页功能
本篇文章是一篇Vue.js的教程,目标在于用一种常见的业务场景--分页/无限加载,帮助读者更好的理解Vue.js中的一些设计思想.与许多Todo List类的入门教程相比,更全面的展示使用Vue.js ...
- SQL之总结(一)
导游通项目之总结SQL 1.选择前面的某几个 oracle: select * from tb_article where rownum<5 order by article_id ...
- 手把手教你撸个vue2.0弹窗组件
手把手教你撸个vue2.0弹窗组件 在开始之前需要了解一下开发vue插件的前置知识,推荐先看一下vue官网的插件介绍 预览地址 http://haogewudi.me/kiko/inde... 源码地 ...