輸入:
第一行包含乙個整數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個叉子,它們通過分支連線。卡卡...