4. 树状数组

难度: 困难
时间限制: 1秒
内存限制: 20MB

题目描述

已知一个数列,你需要进行下面两种操作: 1. 将某区间每一个数加上 x; 2. 求出某一个数的值。 输入格式: 第一行包含两个整数 N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含 N 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。 接下来 M 行每行包含 2 或 4 个整数,表示一个操作,具体如下: 操作 1: 格式:`1 x y k` 含义:将区间 [x,y] 内每个数加上 k; 操作 2: 格式:`2 x` 含义:输出第 x 个数的值。 输出格式: 输出包含若干行整数,即为所有操作 2 的结果。 输入输出样例 输入: 5 5 1 5 4 2 3 1 2 4 2 2 3 1 1 5 -1 1 3 5 7 2 4 输出: 6 10 数据规模与约定: N <= 8,M <= 10
C++
支持C++11标准
返回题库