题解 | 【模板】差分

【模板】差分

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt(), m =in.nextInt();
        long [] a = new long[n];
        long []dp = new long[n];
        for(int i=0;i<n;++i){
            a[i] = in.nextLong();                     
        }        
        for(int i=0;i<m;++i){
            int l=in.nextInt()-1, r=in.nextInt()-1;
            long k=in.nextLong();
            
            dp[l] += k;// 差分 =》 下面2个操作后再做前缀和,相当于让[l,r]区间内每个数都加上了k
            if(r>=n-1)// 最后一个数,没有更后面的数需要操作的了
                continue;
            dp[r+1] -= k;
        }                
        for(int i=1;i<n;++i){
            dp[i] += dp[i-1];
        }

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

全部评论

相关推荐

09-16 14:33
已编辑
南京大学 Java
最近福耀科技大学好火啊,号称保底25w年薪就业,有不少高分学生都报了,兄弟们你有这个分,报传统92还是它?
ITTM:如果真的像宣传所说的能给到25w保底薪资,985也没啥吸引力了,这年头,读书不就是为了能多赚点钱嘛
点赞 评论 收藏
分享
亲切的00后在笔试:我也遇到了,所以我早他一步查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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