题解 | #【模板】差分#

【模板】差分

http://www.nowcoder.com/practice/4bbc401a5df140309edd6f14debdba42

import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); //存放数组元素 Long[] arr = new Long[n+1]; for(int i=0;i<n;i++){ arr[i+1]=sc.nextLong(); }

    long[] preSum=new long[n+1];
    //m次操作
    while(m-->0){
        int l=sc.nextInt();
        int r=sc.nextInt();
        int k=sc.nextInt();
        //进行差分处理
        preSum[l]+=k;
        if(r < n)

// if(r>=n) continue; preSum[r+1]-=k; }

    for(int i = 1;i <= n ;i ++){
        preSum[i] = preSum[i - 1] + preSum[i];
    }
    for(int i = 1;i <= n;i ++){
        arr[i] += preSum[i];
    }
    for(int i = 1;i <= n; i++){
        System.out.print(arr[i]+" ");
    }
}

}

我居南半坡 文章被收录于专栏

多刷题,积蓄力量,欢迎讨论

全部评论

相关推荐

09-22 22:22
中山大学 Java
双尔:赌对了,不用经历秋招的炼狱真的太好了,羡慕了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务