dfs序 樹狀陣列

2021-10-02 07:03:42 字數 1308 閱讀 5867

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...