acwing-前缀和与差分
文章平均质量分 51
前缀和与差分
风有点大
good good study!!!
展开
-
【acwing】798. 差分矩阵
二维差分详解#include<iostream>using namespace std;const int N=1010;int n,m,q;int a[N][N],b[N][N];void insert(int x1,int y1,int x2,int y2,int c){ b[x1][y1]+=c; b[x2+1][y1]-=c; b[x1][y2+1]-=c; b[x2+1][y2+1]+=c;}int main(){ cin.原创 2021-03-27 19:52:45 · 183 阅读 · 0 评论 -
【acwing】797. 差分
题目输入一个长度为 n的整数序列。接下来输入 m个操作,每个操作包含三个整数 l,r,c,表示将序列中 [l,r] 之间的每个数加上 c。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数 n和 m。第二行包含 n个整数,表示整数序列。接下来 m行,每行包含三个整数 l,r,c,表示一个操作。输出格式共一行,包含 n个整数,表示最终序列。数据范围1≤n,m≤100000,1≤l≤r≤n,−1000≤c≤1000,−1000≤整数序列中元素的值≤1000输入样例:6 3原创 2021-03-27 16:39:51 · 104 阅读 · 0 评论 -
差分法
差分差分就是将数列中的每一项分别与前一项数做差,例如:一个序列[1 7 6 5 2 4],差分后得到[1 6 -1 -1 -3 -2 -4]差分序列第一个数和原序列第一个数相同(相当于第一个数减去0)差分序列最后比原序列多一个数(相当于0减去最后一个数)性质差分序列求前缀和可得原序列将原序列区间[L,R]中全部的元素+1,可以转化操作为差分序列L处+1,R+1处-1按照性质2得到,每次修改原序列一个区间+1,那么差分序列修改处增加的和减少的相同例子题目描述------天才程序员菜哭原创 2021-03-27 16:26:56 · 1333 阅读 · 0 评论 -
【acwing】796. 子矩阵的和
输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式第一行包含三个整数 n,m,q。接下来 n行,每行包含 m个整数,表示整数矩阵。接下来 q行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。输出格式共 q行,每行输出一个询问的结果。数据范围1≤n,m≤1000,1≤q≤200000,1≤x1≤x2≤n,1≤y1≤y2≤m,−1000≤原创 2021-03-27 14:54:59 · 192 阅读 · 0 评论 -
【acwing】795. 前缀和
1 . 前缀和其实可以把它理解为数学上的数列的前n项和(对于一个一维数组的前缀和)。我们定义对于一个数组a的前缀和数组s,s[i] = a[1]+a[2]+…+a[i].2 . 二维前缀和与一维前缀和类似,设s[i][j]表示所有a[i’][j’]的和。(1≤i’≤i,1≤j’≤j)有一点像“矩形的面积”那样,把一整块区域的值都加起来。3 . 前缀和的用途一般用来求区间和。对于一维情况,现在我给出一个数列a,要求你回答m次询问,每次询问下标j到k的和。朴素的做法显然是对于每次询问都执行一次相原创 2021-03-27 10:17:48 · 161 阅读 · 0 评论