樹狀陣列模板題 & (樹狀陣列 1:單點修改,區間查詢)
題目描述
這是LibreOJ上的樹狀陣列模板題,這個題考查的點是單點修改和區間查詢。在此附上一版我的AC程式碼:
#include<iostream>
using namespace std;
typedef long long ll;//這個題必須用int會爆。
ll n, q;
ll a[1000000+10];//a是原陣列
ll c[1000000+10];//b是維護a的樹狀陣列。
ll lowbit(ll x)
{
return x & -x;
}
void creat(){
for(ll i=1;i<=n;i++){
c[i]+=a[i];
ll j=i+lowbit(i);
if(j<=n) c[j]+=c[i];
}
}
//建樹函式。
void add(ll x, ll k){
while(x<=n){
c[x]+=k;
x+=lowbit(x);
}
}
//單點修改函式。
ll getsum(ll x){
ll sum=0;
while(x>=1){
sum+=c[x];
x-=lowbit(x);
}
return sum;
}
//求前x項和函式.
int main()
{
scanf("%lld%lld", &n,&q);
for(ll i=1;i<=n;i++){
scanf("%lld", &a[i]);
}
creat();
ll flag, a, b;
for(ll i=1;i<=q;i++){
scanf("%lld%lld%lld", &flag, &a, &b);
if(flag==1) {
add(a,b);
} else if(flag==2){
ll sumda, sumxiao;
sumda = getsum(b);
sumxiao = getsum(a-1);
sumda-=sumxiao;//區間和可以看做是倆個字首和的差。
printf("%lld\n", sumda);
}
}
return 0;
}
相關文章
- 樹狀陣列的區間查詢與區間修改陣列
- HDU 1556【區間更新+單點查詢 樹狀陣列】陣列
- HDU1166 敵兵佈陣【樹狀陣列 單點修改+區間查詢】陣列
- POJ 3468 【區間修改+區間查詢 樹狀陣列 | 線段樹 | 分塊】陣列
- 樹狀陣列模板+習題集陣列
- 【筆記/模板】樹狀陣列筆記陣列
- 樹狀陣列陣列
- 洛谷題單指南-二叉堆與樹狀陣列-P3368 【模板】樹狀陣列 2陣列
- 解析樹狀陣列陣列
- 【luogu3368】模板 樹狀陣列 2陣列
- 二維樹狀陣列陣列
- 樹狀陣列詳解陣列
- 樹狀陣列基礎陣列
- 關於區間操作查詢(字首和與差分)+樹狀陣列基礎陣列
- 線段樹(1)建樹、單點修改、單點查詢、區間查詢和例題
- 樹狀陣列快速入門陣列
- 樹狀陣列和逆序對陣列
- POJ3468 A Simple Problem with Integers---樹狀陣列(區間問題)陣列
- 求區間不同數的個數【樹狀陣列求解】陣列
- bzoj3110: [Zjoi2013]K大數查詢(主席樹+樹狀陣列)陣列
- 【Leetcode每日一題】327. 區間和的個數(線段樹/樹狀陣列)LeetCode每日一題陣列
- POJ-2352 Stars(樹狀陣列)陣列
- 樹狀陣列(我是真小白)陣列
- 資料結構——樹狀陣列資料結構陣列
- 樹狀陣列3種基本操作陣列
- HDU 1556 Color the ball(線段樹|樹狀陣列)陣列
- HDU 1541 & POJ 2352 Stars (樹狀陣列)陣列
- bzoj3155: Preprefix sum(樹狀陣列)陣列
- 洛谷題單指南-二叉堆與樹狀陣列-P3378 【模板】堆陣列
- HDU 2689 Sort it【樹狀陣列求逆序對】陣列
- CHOJ 4201 樓蘭圖騰【樹狀陣列】陣列
- AC自動機+字典序+樹狀陣列陣列
- E - 樹狀陣列 1【GDUT_22級寒假訓練專題五】陣列
- 樹狀陣列(BIT)—— 一篇就夠了陣列
- 樹狀陣列(待補)(生硬 公式 用法 證明)陣列公式
- 樹狀陣列learning Day1識海社群打卡1st陣列
- Leetcode 327. 區間和的個數 (字首和 + 離散化 + 樹狀陣列)LeetCode陣列
- AcWing 242. 一個簡單的整數問題(樹狀陣列解法)陣列