当前位置: 首页 > article >正文

差分【Java】

https://blog.csdn.net/weixin_45629285/article/details/111146240?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171084120016800225530603%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=171084120016800225530603&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-111146240-null-null.142v99pc_search_result_base1&utm_term=%E5%B7%AE%E5%88%86&spm=1018.2226.3001.4187

import java.util.Scanner;

public class 差分 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n =scanner.nextInt();
        int m=scanner.nextInt();
        int [] a = new int[n+10086];
        int [] b= new int[n+10086];
        /**
         * 也就是说,a数组是b数组的前缀和数组,反过来我们把b数组叫做a数组的差分数组。
         * 换句话说,每一个a[i]都是b数组中从头开始的一段区间和。
         */
        for (int i=1;i<=n;i++){
            //构建差分数组
            a[i]=scanner.nextInt();
            b[i]=a[i]-a[i-1];
        }

        int l,r,c=0;
        while (m--!=0){
            l=scanner.nextInt();
            r=scanner.nextInt();
            c=scanner.nextInt();
            //b[l] + c,效果使得a数组中 a[l] 及以后的数都加上了c(红色部分),
            b[l]+=c;
            //b[r + 1] - c,让a数组中 a[r + 1]及往后的区间再减去c
            b[r+1]-=c;
        }
        for (int i=1;i<=n;i++){
             b[i]+=b[i-1];//求前缀和
            System.out.print(b[i]+" ");
        }
    }
}


http://www.kler.cn/a/274261.html

相关文章:

  • 物联网领域的MQTT协议,优势和应用场景
  • NOTEPAD++编写abap
  • 寒假刷题Day19
  • Love Tester:探索爱情的深度与维度
  • SQL Server中RANK()函数:处理并列排名与自然跳号
  • Nginx笔记220825
  • 富格林:曝光暗箱细节确保安全
  • PostgreSQL教程(四十四):参考命令(三)之服务器应用
  • Apache SeaTunnel MongoDB CDC 使用指南
  • 数据库四大特性的实现原理
  • 3月19日做题
  • 详解命令docker run -d --name container_name -e TZ=Asia/Shanghai your_image
  • ②免费AI软件开发工具测评:通义灵码 VS 码上飞
  • IPD集成产品开发:塑造企业未来竞争力的关键
  • 《C++游戏编程入门》第9章 高级类与动态内存:Game Lobby
  • pdf转图片(利用pdf2image包)
  • 干好工作18法
  • Linux 常用操作命令大全
  • 理论学习:with torch.no_grad()
  • #Ubuntu(修改root信息)
  • Gradle v8.5 笔记 - 从入门到进阶(基于 Kotlin DSL)
  • linux 安装常用软件
  • Playwright中locator() 方法快速定位网页元素[全面总结]
  • 【C++ 哈希】
  • 2024流星全自动网页生成系统重构版源码
  • 微信支付宝--充ChatGPTPLUS/openAI key