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

2340单点修改、区间查询

2340单点修改、区间查询

⭐️难度:中等
🌟考点:线段树
📖
在这里插入图片描述

📚

import java.util.Scanner;

public class Main {
    static int N = 100010;
    static int n;
    static int[] c = new int[N];
    static int lowbit(int x){ // 求loubit
        return x & -x;
    }
    static void add(int x,int v){ // 单点修改
        for (int i = x; i <= n ; i+=lowbit(i)) {
            c[i] += v;
        }
    }
    static int sum(int x){ // 区间查询
        int res = 0 ;
        for(int i = x;i > 0;i-=lowbit(i)){
            res += c[i];
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();

        for (int i = 1; i <= n; i++) {
            add(i,sc.nextInt()); // 初始化直接调用单点修改
        }

        int m = sc.nextInt();
        while(m-->0){
            int t = sc.nextInt();
            if(t == 1){ // 单点修改
                int x = sc.nextInt();
                int a = sc.nextInt();
                add(x,a);
            }else if(t == 2){  // 区间查询
                int l = sc.nextInt();
                int r = sc.nextInt();
                System.out.println(sum(r) - sum(l - 1)); // 差分求和
            }
        }
    }
}

相关文章:

  • 独立开发记录:使用Trae和Cloudflare快速搭建了自己的个人博客
  • 深度学习与大模型-矩阵
  • 解数独 (leetcode 37
  • 生化混合智能技术(Biochemical Hybrid Intelligence, BHI)解析与应用
  • devServer changeOrigin不管用
  • 101.在 Vue 3 + OpenLayers 使用 declutter 避免文字标签重叠
  • RTSP协议规范与SmartMediaKit播放器技术解析
  • 【Golang】第五弹----函数
  • go-文件缓存与锁
  • stm32 晶振换算
  • 【蔚蓝星球的节日】世界海洋日的探索与海洋的重要性
  • 【Rust基础】Rust后端开发常用库
  • ssm框架整合
  • 芯科科技推出的BG29超小型低功耗蓝牙®无线SoC,是蓝牙应用的理想之选
  • 哈尔滨算力服务器托管推荐-青蛙云
  • 利用DeepSeek搭建跨工作表数据的可视化分析动态面板
  • VSCode 搭建C++编程环境 2025新版图文安装教程(100%搭建成功,VSCode安装+C++环境搭建+运行测试+背景图设置)
  • 智能三防手持终端破解传统仓储效率困局
  • 每天一道算法题【蓝桥杯】【两两交换链表中的节点】
  • 【SpringBoot】实现登录功能
  • 为小龙虾洗清这些“黑锅”,这份科学吃虾指南请收好
  • 携程:今年第一季度营业收入约138亿元,入境旅游预订同比增长超100%
  • 4名中学生同服处方药后身体不适,一心堂一药店未凭处方售药被罚1万元
  • 视频丨习近平在河南洛阳市考察调研
  • 电子凭证会计数据标准推广至全国
  • 英国知名歌手批政府:让AI公司免费使用艺术家作品是盗窃