首页 > 其他分享 >前缀和、差分

前缀和、差分

时间:2022-10-10 19:13:27浏览次数:51  
标签:前缀 int sum 差分 构造 数组

前缀和类似于数列,s[i]=s[i-1]+a[i],    s[r]-s[l-1]等于l到r的所有项之和

 

 

求前缀和运算:

const int N = 1e5+10;
int sum[N], a[N]; //sum[i] = a[1] + a[2] + a[3] ..... a[i];
for(int i = 1; i <= n;i++)
{
sum[i] = sum[i - 1] + a[i];
}
然后查询操作:

scanf("%d%d", &l, &r);
printf("%d\n", sum[r] - sum[l - 1]);

 

差分

差分可以看出前缀和的逆运算

首先给定一个原数组a:a[1], a[2], a[3],,,,,, a[n];

然后我们构造一个数组b : b[1] ,b[2] , b[3],,,,,, b[i];

使得 a[i] = b[1] + b[2 ]+ b[3] +,,,,,, + b[i]

也就是说,a数组是b数组的前缀和数组,反过来我们把b数组叫做a数组的差分数组。换句话说,每一个a[i]都是b数组中从头开始的一段区间和。

考虑如何构造差分b数组?

最为直接的方法

如下:

a[0 ]= 0;

b[1] = a[1] - a[0];

b[2] = a[2] - a[1];

b[3] =a [3] - a[2];

........

b[n] = a[n] - a[n-1];

 

标签:前缀,int,sum,差分,构造,数组
From: https://www.cnblogs.com/wjt16/p/16772049.html

相关文章

  • 洛谷 P3530 / bzoj2788【tarjan】【差分约束】
    判断是否有解可以使用差分约束。求解赛车手的成绩的取值可以使用Floyd。但是\(O(n^3)\)会TLE。可以先进行一次缩点。然后进行Floyd求出每一个连通块内的最长路径......
  • 前缀
    Day12022.10.9昨天在菜鸟教程上学习了c++的基本语法,今日准备着手开始学习算法,在labuladong公众号上开始按顺序学习,今天首先学习了前缀和数组。前缀和首先写出前缀和代......
  • 海乐淘商城系统--01前缀(功能介绍以及关于架构)
    系统功能图我要完成的部分系统功能管理后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。前台系统:用户可以在前台系统中进行注册、登录、浏览......
  • 竞赛-6201. 找出前缀异或的原始数组
    参加竞赛的一道题中等难度给你一个长度为n的整数数组pref。找出并返回满足下述条件且长度为n的数组arr:pref[i]=arr[0]^arr[1]^...^arr[i].注意^表示......
  • 2020辽宁省赛 xor(前缀和DP 异或性质)
    2020辽宁省赛xor题意:​ 现在有一个长度为n的数组a。现在要将a拆分成若干个连续的子数组,要求每个连续的数组异或和都为x。请问有多少种拆分的方案。思路:​ 容易推出转......
  • 差分约束模板补坑与学习
    很久以前就学了差分约束,但是一直没搞懂,也懒得搞懂。今天看板子,脑补了几秒钟突然就懂了。对于一个不等式,\(x_i-x_j\lek\),可以变形:\(x_i\lex_j+k\)。这跟最短......
  • [答疑精选]EA生成代码变量命名不要m前缀,采用首字母小写咋设置(2016/3/26)
    EA生成代码变量命名不要m前缀,采用首字母小写咋设置ANT:潘老师。ea里面要表示一个数组类型的属性怎么弄啊?c模板,变量命名不要m前缀,采用首字母小写咋设置潘加宇:数组已经是实现......
  • 最大子矩阵和 = 前缀和 + 最大子段和
    简单来说这道题就是求一个\(N\timesM\)的矩阵的最大子矩阵和。(因为求的是黑色石板与白色石板的数量差,所以代表白色石板的“0”可以看作-1,这样就将问题转化为了求最大......
  • 差分约束
    1、问题类型描述差分约束是一种特殊的\(n\)元一次不等式组,它包含\(n\)个变量\(x_1,x_2,\cdotsx_n\)以及\(m\)个约束条件。每个约束条件是由两个其中的变量做......
  • P2680 [NOIP2015 提高组] 运输计划 (树上差分-边差分)
    P2680题目的大意就是走完m条路径所需要的最短时间(边权是时间),其中我们可以把一条边的权值变成0(也就是题目所说的虫洞)。可以考虑二分答案x,找到一条边,使得所有大于x的路径......