P3368 模板 樹狀陣列 2 題解

2022-02-14 17:18:11 字數 869 閱讀 5976

csdn同步

原題鏈結

前置知識:

樹狀陣列的單點修改與區間詢問。

簡要題意:維護陣列的區間修改與單點詢問。

同樣類似的,我們用樹狀陣列進行操作,對每個區間修改,本質上是對差分陣列的字首和的維護,而字首和的維護我們需要用到樹狀陣列

樹狀陣列以常數小,空間小比線段樹好用,好寫(但是功能沒有線段樹多)。

所以對每個區間 \([l,r]\) ,更新 \(l\) 和 \(r+1\) 的差分值即可。

時間複雜度:\(\mathcal(n \log n) - \mathcal(\log n)\).

實際得分:\(100pts\).

#pragma gcc optimize(2)

#includeusing namespace std;

const int n=1e6+1;

typedef long long ll;

inline int read()

int x=0;while(ch>='0' && ch<='9') x=(x<<3)+(x<<1)+ch-'0',ch=getchar();return x*f;}

int a[n]; ll c[n];

int n,m,x,y;

inline int lowbit(int x)

inline ll sum(int x) return s;

}inline void update(int x,int k)

}int main() while(m--) else

} return 0;

}

P3368 模板 樹狀陣列 2 題解

同步 原題鏈結 前置知識 樹狀陣列的單點修改與區間詢問。簡要題意 維護陣列的區間修改與單點詢問。同樣類似的,我們用樹狀陣列進行操作,對每個區間修改,本質上是對差分陣列的字首和的維護,而字首和的維護我們需要用到樹狀陣列。樹狀陣列以常數小,空間小比線段樹好用,好寫 但是功能沒有線段樹多 所以對每個區間 ...

P3368 模板 樹狀陣列 2

題目描述 如題,已知乙個數列,你需要進行下面兩種操作 1.將某區間每乙個數數加上x 2.求出某乙個數的值 輸入格式 第一行包含兩個整數n m,分別表示該數列數字的個數和操作的總個數。第二行包含n個用空格分隔的整數,其中第i個數字表示數列第i項的初始值。接下來m行每行包含2或4個整數,表示乙個操作,具...

P3368 模板 樹狀陣列 2

題目傳送門 p3368 模板 樹狀陣列 2 給你乙個長度為n的陣列 操作 1 格式 1 x y k 含義 將區間 x,y x,y x,y 內每個數加上 kkk 操作 2 格式 2 x 含義 輸出第 x xx 個數的值。區間更新,單點查詢的樹狀陣列 include include include in...