校門外的樹 LibreOJ 10115

2022-09-14 20:18:20 字數 582 閱讀 7126

原題鏈結

考察:樹狀陣列

思路:操作1:讀入 l,r 表示在 l 到 r 之間種上一種樹,每次操作種的樹的種類都不同.

有點像差分,在[l,r]區間內加入同一種樹.但是不能全部加1,最後答案是計數種類數.比較直觀的想法就是在x = l處+1,x = r處-1.但是當詢問[1,r+1]等區間時應該輸出1而不是字首和的0.

將左右端點分開處理,用兩個樹狀陣列,第乙個陣列在x = l處+1,第二個陣列在x = r處+1.當詢問[l,r]結果是求出[1,r]區間第乙個陣列的和,[1,l-1]區間第二個陣列的和,兩個相減.這實際就是括號法.

比較坑的是同一地方可以種很多樹.

#include #include using namespace std;

const int n = 50010;

int n,m,tr[2][n];

int lowbit(int x)

void add(int t,int k,int x)

int ask(int t,int r)

int main()

return 0;

}

校門外的樹

描述 某校大門外長度為 l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是 1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸 0的位置,另一端在 l的位置 數軸上的每個整數點,即0,1,2 l,都種有一棵樹。馬路上有一些區域要用來建地鐵,這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起...

校門外的樹

某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知任一區域的起始點和終止...

校門外的樹

校門外的樹 題目描述 某校大門外長度為l的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1公尺。我們可以把馬路看成乙個數軸,馬路的一端在數軸0的位置,另一端在l的位置 數軸上的每個整數點,即0,1,2,l,都種有一棵樹。由於馬路上有一些區域要用來建地鐵。這些區域用它們在數軸上的起始點和終止點表示。已知...