青出於藍勝於藍 (樹狀陣列 DFS序)

2021-08-17 10:21:03 字數 1032 閱讀 5964

武當派一共有 n

n 人,門派內 n

n 人按照武功高低進行排名,武功最高的人排名第 1

1,次高的人排名第 2

2,... 武功最低的人排名第 n

n。現在我們用武功的排名來給每個人標號,除了祖師爺,每個人都有乙個**,每個人可能有多個徒弟。

我們知道,武當派人才輩出,連祖師爺的武功都只能排行到 p

p。也就是說徒弟的武功是可能超過**的,所謂的青出於藍勝於藍。

請你幫忙計算每個人的所有子弟(包括徒弟的徒弟,徒弟的徒弟的徒弟....)中,有多少人的武功超過了他自己。

輸入第一行兩個整數 n, p(1 \le n \le 100000, 1 \le p \le n)n,

p(1≤

n≤10

0000

,1≤p

≤n)。

接下來 n-1n−

1 行,每行輸入兩個整數 u, v(1 \le u, v \le n)u,

v(1≤

u,v≤

n),表示 u

u 和 v

v 之間存在師徒關係。

輸出一行 n

n 個整數,第 i

i 個整數表示武功排行為i

i 的人的子弟有多少人超過了他。

行末不要輸出多餘的空格。

題解:首先利用dfs將樹上問題化為一維問題,然後用樹狀陣列按照逆序對的求法更新加求答案即可。(很水的。。)

#include#include#include#include#includeusing namespace std;

#define maxn 100005

vectorq[maxn];

int n,p,a[maxn],b[maxn],st,ed,c[maxn],ans[maxn];

void dfs(int u,int p)

for(int i=1;iprintf("%d ",ans[i]);

printf("%d\n",ans[n]);

return 0;

}

青出於藍而勝於藍 揭秘全新的 HWSQL

mysql是世界上最流行的開源資料庫,集可靠 易用 功能豐富 適用範圍廣等特點於一身,尤其對開發者友好,使其成為華為雲關係型資料庫 rds 使用者的首選。儘管mysql備受關注,更是各種應用的第一選擇,但也面臨著諸多挑戰,其社群版在雲上和線下技術侷限性會造成一定的影響,難以完全滿足使用者的需求。現由...

計蒜客 青出於藍勝於藍 dfs 樹狀陣列

題目描述 武當派一共有 n人,門派內 n 人按照武功高低進行排名,武功最高的人排名第 1,次高的人排名第 2,武功最低的人排名第 n。現在我們用武功的排名來給每個人標號,除了祖師爺,每個人都有乙個 每個人可能有多個徒弟。我們知道,武當派人才輩出,連祖師爺的武功都只能排行到 p。也就是說徒弟的武功是可...

計蒜客 青出於藍勝於藍 dfs序 歸併樹

武當派一共有 nn 人,門派內 nn 人按照武功高低進行排名,武功最高的人排名第 11,次高的人排名第 22,武功最低的人排名第 nn。現在我們用武功的排名來給每個人標號,除了祖師爺,每個人都有乙個 每個人可能有多個徒弟。我們知道,武當派人才輩出,連祖師爺的武功都只能排行到 pp。也就是說徒弟的武功...