本文是来介绍一下动态规划里面的前缀和问题
遇到区间求和先问自己3个问题,如果都能回答,那前缀和就被你拿捏了~
第一个问题:前缀和是个啥?
顾名思义,前缀和就是前缀的元素求和,一个区间的总数和sum(a[l:r+1])
第二个问题:为什么要学前缀和?
因为它就像一个火箭,装上它的程序速度直接起飞!时间复杂度从O(n*m)降到O(n)。
第三个问题:那前缀和怎么学习呢?
很简单,先理解原理,再背背模板,最后刷题巩固就掌握了。(╹ڡ╹ )
原文链接:https://blog.csdn.net/m0_55148406/article/details/123541630
#include<stdio.h>
#define N 100000
int main()
{
long long int l,r,n,q,j,i;
long long int a[N];
long long int sum[N];//记录每一个数值和 比如前L项 前R项
long long int node[N];//记录目标前缀和
scanf("%lld %lld",&n,&q);
sum[0]=0;
for(i=0;i<n;i++)
{
scanf("%lld",&a[i]);
}
for(i=1;i<=n;i++)
{
sum[i]=sum[i-1]+a[i-1];//这里很重要! 想想为什么加a[i-1]?
}
j=0;
for(i=0;i<q;i++)
{
scanf("%lld %lld",&l,&r);
node[j]=sum[r]-sum[l-1];//相当于状态方程
j++;
}
for(i=0;i<q;i++)
{
printf("%lld\n",node[i]);
}
return 0;
}