the first line contains an integer n (n ≤ 100,000) , which is the number of the forks in the tree.
output
for every inquiry, output the correspond answer per line.
一棵以1為根節點的樹,q x查詢x及其子樹上的蘋果數;c x修改節點x,有蘋果就減去,無蘋果就新增。
dfs序+樹狀陣列。
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define lowbit(x) x&(-x)
//先求出dfs序將其線性化,再利用樹狀陣列維護區間和及單點修改;
const
int n=
1e5+55;
//單點修改時只修改ru[x],查詢時查詢ru[x]~out[x]區間範圍的值;
int in[n]
,out[n]
,tr[n]
=,head[n]
;bool p[n]
;int cnt=
0,tot=0;
struct nodemp[n]
;void
add(
int x,
int y)
//建邊,單向;
void
dfs(
int u)
//求dfs序;
out[u]
=tot;
//出時時間戳;
}void
update
(int x,
int val)
}int
query
(int x)
return ans;
}int
main()
dfs(1)
;scanf
("%d"
,&m)
;for
(i=1
;i<=n;
++i)
update
(i,1);
for(i=
0;i++i)
else
else}}
return0;
}
樹狀陣列 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個叉子,它們通過分支連線。卡卡...
Apple Tree 樹狀陣列 dfs序
description input output for every inquiry,output the correspond answer per line.sample input 31 2 1 33 q 1c 2 q 1sample output32 sourcepoj monthly 20...
poj 3321(dfs序 樹狀陣列)
第一次知道dfs序這個東西,可以維護樹上的任意乙個節點,以這個節點為根的子樹上的所有節點的標號。是連續的一段區間。一棵子樹的所有節點在dfs序裡是連續一段,主要就是利用這個性質來解題 然後就是樹狀陣列維護區間內蘋果的數量 另外這個題很卡時間,我用了輸入輸出掛才過 include includeusi...