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

242. 一个简单的整数问题

Powered by:NEFU AB-IN

Link

文章目录

  • 242. 一个简单的整数问题
    • 题意
    • 思路
    • 代码

242. 一个简单的整数问题

  • 题意

    给定长度为 N的数列 A,然后输入 M行操作指令。
    第一类指令形如 C l r d,表示把数列中第 l∼r个数都加 d
    第二类指令形如 Q x,表示询问数列中第 x个数的值。
    对于每个询问,输出一个整数表示答案

  • 思路

    树状数组 + 差分,实现区间修改 + 单点查询
    其实就是对差分数组进行原先树状数组的操作,维护差分数组

    • 区间修改就是 add(l, d) add(r + 1, -d)
    • 单点查询就是,对差分数组求前缀和,也就是单点查询了

    如要实现区间查询,详见 link

  • 代码

    '''
    Author: NEFU AB-IN
    Date: 2023-03-26 11:48:05
    FilePath: \Acwing\242\242.py
    LastEditTime: 2023-03-26 11:55:10
    '''
    # import
    import sys, math
    from collections import Counter, deque
    from heapq import heappop, heappush
    from bisect import bisect_left, bisect_right
    
    # Final
    N = int(1e5 + 10)
    INF = int(2e9)
    
    # Define
    sys.setrecursionlimit(INF)
    read = lambda: map(int, input().split())
    
    # —————————————————————Division line ————————————————————————————————————————
    tr = [0] * N
    
    
    def lowbit(x):
        return x & -x
    
    
    def add(x, v):
        while x < N:
            tr[x] += v
            x += lowbit(x)
    
    
    def query(x):
        res = 0
        while x:
            res += tr[x]
            x -= lowbit(x)
        return res
    
    
    n, m = read()
    a = [0] + list(read())
    for i in range(1, n + 1):
        add(i, a[i] - a[i - 1])
    
    for _ in range(m):
        op = list(input().split())
        if op[0] == 'C':
            l, r, d = map(int, op[1:])
            add(l, d)
            add(r + 1, -d)
        else:
            print(query(int(op[1])))
    

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

相关文章:

  • JSqlParser:Java SQL 解析利器
  • 基于 WPF 平台使用纯 C# 实现动态处理 json 字符串
  • Redis支持数据类型详解
  • Docker 部署 mysql
  • (三)线性代数之二阶和三阶行列式详解
  • StarRocks 3.4 发布--AI 场景新支点,Lakehouse 能力再升级
  • 面试官:vue2和vue3的区别有哪些
  • PMP项目管理-【第一章】引论
  • 番茄学习法——亲测超级好用
  • 分治法实现合并排序(归并排序),理解分治算法思想,实现分治算法的完美例子合并排序(含码源与解析)
  • Householder 变换及其在QR分解中使用的证明
  • Flutter 本地存储 —— 基本的键值对存储
  • 机器学习笔记第四周+知识图谱
  • java中Map遍历的4种方式
  • Hadoop MapReduce知识预览,WordCount词频统计案例
  • 用JS+CSS打造你自己的弹幕王国,让网页动起来!
  • 蓝桥杯刷题冲刺 | 倒计时14天
  • 【蓝桥杯集训·周赛】AcWing 第96场周赛
  • 微软Bing加入ChatGPT后如何用?教你12种问法黄金公式学会了,又能研究新副业赚钱又能加快学习速度
  • 【数据结构】链表OJ题
  • 中国石油大学(北京)第三届“骏码杯”程序设计竞赛(同步赛)
  • Day927.如何进行组件化分析和设计? -系统重构实战
  • Kafka介绍
  • 提升网站性能:Nginx五种高效负载均衡策略
  • Maven依赖管理
  • css绘制一个Pinia小菠萝