數算實習 apple tree 樹狀陣列

2021-08-28 19:51:31 字數 1044 閱讀 7515

輸入:

第一行包含乙個整數n(n ≤100,000),這是樹中的樹杈的數量。

以下n - 1行每個包含兩個整數u和v,這意味著樹杈u和樹杈v通過分支連線。

下一行包含的整數m(m ≤100,000)。

以下m行每行包含乙個資訊,它要麼是

「 c x 」,表示在樹杈x上是否存在蘋果的狀態發生改變。即如果樹杈上有蘋果,那麼卡卡就會吃掉它; 否則就長出乙個新的蘋果。

或是「 q x 」表示查詢樹杈x上方子樹中的蘋果數量,包括叉子x上的蘋果(如果存在樹杈x上存在蘋果

最開始樹上長滿了蘋果

#include #include using namespace std;

int a[200002] = ;

int c[200002] = ;

int sta[100001];

int en[100001];

vectors[100001];

int ti = 1;

int n;

void dfs(int i) //深搜構建陣列區間

en[i] = ti;

a[en[i]] = 1;

ti++;

}int lowbit(int x)

void update(int x, int delta) //更新樹狀陣列

}int calculate(int x) //求和

return sum;

}int main()

dfs(1);

for (int i = 1; i <= 2 * n; ++i)

for (int j = i - lowbit(i) + 1; j <= i; ++j)

c[i]++;

cin >> m;

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

else if (p == 'c')

}return 0;

}

數算實習 Mobile phones 樹狀陣列

mobile phones 描述假設某地區的 移動 基站可以接收手機訊號。該區域為正方形,形成乙個s s大小的矩陣,行和列的編號從0到s 1。每個方塊包含乙個基站。手機內的有源手機數量可能會發生變化,因為手機從可以在方塊間任意移動或開機關機。編寫乙個程式,接收這些報告並回答任何矩形區域中當前活動手機...

Apple Tree(樹狀陣列 線段樹)

description 3 1 2 1 3 3 q 1 c 2 q 1 sample output 3 2 題目大意 一棵樹上長了蘋果,每乙個樹枝節點上有長蘋果和不長蘋果兩種狀態,兩種操作,一種操作能夠改變樹枝上蘋果的狀態,另一種操作詢問某一樹枝節點一下的所有的蘋果有多少。樹狀陣列版 include...

樹狀陣列 DFS序 Apple Tree

題目鏈結 output for every inquiry,output the correspond answer per line.sample input 31 2 1 33 q 1c 2 q 1sample output32 題意 就是一棵蘋果樹,二叉樹 樹有n個叉子,它們通過分支連線。卡卡...