引人入勝的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個整數,表示乙個操作,具體如下 操...