栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

前缀和及差分总结

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前缀和及差分总结

1.前缀和与差分是互为逆运算的两种计算方式,前缀和指的是一个数组是另一个数组中前n项元素之和,而差分指的是一个数组的前n项的和是另一个数组。

2.二维前缀:与一维前缀和类似,设s[i][j]表示所有a[i'][j']的和。(1≤i'≤i,1≤j'≤j)

有一点像“矩形的面积”那样,把一整块区域的值都加起来。

3.假设有数组a为[1, 2, 3, 4, 5]那么代表它的前缀和数组的数组b就是1, 3, 6, 10, 15,也就是说,a[n] = b[1] + b[2] + ... + b[n - 1] + b[n]。

利用前缀和可以快速求出原数组从1~r的区间元素和,等于s[1~r]=b[r] - b[l - 1],代码如下:

#include
using namespace std;
const int N=le5+1;
int n,m;
inta[N],s[N];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;++i) s[i]=s[i-1]+a[i];
while(m--)
 {
 int 1,r;
scanf("%d%d",&l,&r);
printf("%dn"'s[r]-s[l-1]);
 }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/718829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号