nefu 1330 樹上求和dfs序 線段樹

2021-09-08 02:16:23 字數 592 閱讀 9083

dfs序即先序遍歷樹,對於第乙個節點進行總結點個數加一並且賦值操作。

思路:對於給出的點,進行vecter建樹。建樹完成後dfs序求出各節點,dfs序,ls[i]表示當前節點的dfs序為多少,rs[i]表示以當前節點為根的子樹的最右邊節點值。

**:

#include #include #include #include #include using namespace std;

const int m=4e4+100;

vectorv[m];

int ls[m],rs[m],cnt;

void dfs(int rt,int now)

int ans=0;

int mid=(l+r)/2;

if(x<=mid)

if(y>mid)

return ans;

}int main()

dfs(0,1);

build(1,1,cnt);

int m;

scanf("%d",&m);

while(m--)

else}}

return 0;

}

樹上求和( dfs序 線段樹 )

題目鏈結 解題報告 將樹轉化成dfs序,對於任意節點及其子樹總是一段連續的區間,那麼轉化成區間問題。ai b 2 ai ai 2 ai b b b 很明顯線段樹維護即可。define first f define second s define ll long long define mp make...

樹上求和(dfs

有一棵包含n個節點和n 1條邊的樹,規定樹鏈 u,v 為樹上從u到v的簡單路徑。樹的每條邊上都有乙個正整數,這個正整數被稱作這條邊的顏色,規定一條樹鏈的權值w u,v 為這條樹鏈上所有邊的顏色的代數和。而整棵樹的權值為所有不同的樹鏈的權值的代數和。已知所有邊的顏色集合恰好為1到n 1這n 1個不同的...

求和(dfs序 線段樹)

題意 已知有n個節點,有n 1條邊,形成乙個樹的結構。給定乙個根節點k,每個節點都有乙個權值,節點i的權值為vi 給m個操作,操作有兩種型別 1 a x 表示將節點a的權值加上x 2 a 表示求a節點的子樹上所有節點的和 包括a節點本身 題解 dfs序 線段樹 用dfs序確定in x 和out x ...