差分与前缀和

差分 当某一个数组要在很多不确定的区间,加上相同的一个数

//读入原始数据 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]));
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值