給定長度為n的數列a,然後輸入m行操作指令。
第一類指令形如「c l r d」,表示把數列中第l~r個數都加d。
第二類指令形如「q x」,表示詢問數列中第x個數的值。
對於每個詢問,輸出乙個整數表示答案。
輸入格式
第一行包含兩個整數n和m。
第二行包含n個整數a[i]。
接下來m行表示m條指令,每條指令的格式如題目描述所示。
輸出格式
對於每個詢問,輸出乙個整數表示答案。
每個答案佔一行。
資料範圍
1≤n,m≤105,
|d|≤10000,
|a[i]|≤1000000000
輸入樣例:105
1234
5678
910q 4q 1
q 2c 163
q 2輸出樣例:41
25
lyd大佬在書上提到了樹狀陣列有乙個更高效的初始化方法可以將時間複雜度優化到線性,但是我在網上只能找到求字首和的方法,沒有在原資料上構造的方法,於是自己yy了乙個,不過限於本題的資料規模,提公升並不明顯。
#include
#define ll long long
#define lowbit(x) ((x)&(-(x)))
using
namespace std;
const
int n =
1e5+10;
int n, m;
ll c[n]
, a[n]
;inline ll ask
(int x)
inline
void
add(
int x,
int y)
inline
void
build()
}int
main()
else
}return0;
}
乙個簡單的整數問題
給定長度為n的數列a,然後輸入m行操作指令。第一類指令形如 c l r d 表示把數列中第l r個數都加d。第二類指令形如 q x 表示詢問數列中第x個數的值。對於每個詢問,輸出乙個整數表示答案。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數a i 接下來m行表示m條指令,每條指令的格式如題...
乙個簡單的整數問題
題目描述給定長度為n的數列a,然後輸入m行操作指令。第一類指令形如 c l r d 表示把數列中第l r個數都加d。第二類指令形如 q x 表示詢問數列中第x個數的值。對於每個詢問,輸出乙個整數表示答案。輸入格式 第一行包含兩個整數n和m。第二行包含n個整數a i 接下來m行表示m條指令,每條指令的...
問題 A 乙個簡單的整數問題
問題 a 乙個簡單的整數問題 時間限制 5 sec 記憶體限制 128 mb 提交 75 解決 25 提交 狀態 討論版 命題人 quanxing edit testdata 題目描述 你有 n個整數,a1,a2,an。你需要處理兩種操作。一種操作是在給定間隔中為每個數字新增一些給定數字。另一種是要...