luogu3374 3368樹狀陣列

2021-08-08 08:25:23 字數 806 閱讀 6953

引人入勝的3374

#include #include using namespace std;

int c[500005], n, m, u, v, w, k;

inline int lowbit(int x)

void add(int pos, int num)

}int sum(int pos)

return temp;

}int main()

for(int i=1; i<=m; i++)

return 0;

}

當然,上述模板誰都會,那麼3368就非常日怪了。

先講查分。有原陣列a,差分陣列b:

b[i]=a[i]-a[i-1]

這有什麼用?比如:對位置從2到5的陣列加2得:

事實上,把陣列從pos1到pos2加上數k,只需將差分陣列b[pos1]加k,b[pos2+1]減k即可

讚美差分!

#include #include using namespace std;

int x, lastx=0, n, m, c[1000005], u, v, w;

inline int lb(int x)

void add(int pos, int num)

}int sum(int pos)

return re;

}int main()

for(int i=1; i<=m; i++)

else

} return 0;

}

luogu3374 樹狀陣列

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

樹狀陣列 luogu4113 採花

花園裡有c種花共計n朵,公主要在乙個區間 l,r 內採花,僅當該顏色的花必須至少可以採到兩朵,公主才會採它,問公主可以才多少種花。此外,題目會給出m個這樣的閉區間用來詢問。0 c顯然,這個問題和之前的luogu1972 hh的項鍊是很類似的,本質是在求區間內不同元素的數目,只是僅當該元素至少出現兩次...

luogu3368 樹狀陣列 差分

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