差分 当某一个数组要在很多不确定的区间,加上相同的一个数
//读入原始数据 n,m,a
输入n,m
for(int i=1;i<=n;i++){
输入a[i]
}
//差分
for(int i=1;i<=n;i++)
b[i]=a[i]-a[i-1]
//区间操作
while(m--)
{
输入l,r,value
b[l]+value
b[r+1]-value
}
//前缀和还原
for(int i=1;i<n;i++)
b[i]=b[i]+b[i-1]
前缀和 对于某一数组区间进行多次询问,[L,r] 的和
输 入 N 和 M
输入 N 个值 并计算前缀和
for( int i=1;i<=N;i++)
输入a[i]
并计算sum[i]=sum[i-1]+a[i]
输入 M 个区间,计算结果
while(M)
M-=1
输入 L , R
计算 [r]-[l-1],并输出
import java.util.Scanner;
public class Main {
static int a[]=new int [100005];
static int sum[]=new int [100005];
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n; //n层
int m; // m个区间
n = in.nextInt();
m = in.nextInt();
for(int i=1;i<=n;i++)
{
a[i]= in.nextInt();
sum[i]=a[i]+sum[i-1];
}
while(m>0)
{
m--;
int l,r;
l = in.nextInt();
r = in.nextInt();
System.out.println((sum[r]-sum[l-1]));
}
}
}