ZOJ 3684 Destroy 樹的中心

2021-06-22 00:42:45 字數 545 閱讀 4456

中心節點就是樹的中心,2遍dfs求到樹的直徑,而中心一定在直徑上,順著直徑找到中心就夠了。

然後可以一遍樹形dp找到最小值或者二分+判斷是否訪問到葉子節點。

#include #include#include#includeusing namespace std;

struct node

t;vectortree[10005];

int st,ed,maxs,n;

void dfs1(int now,int fa,int sum)

for(int i=0;imaxs)

for(int i=0;ilim)

}return true;

}int main()

else

}printf("%d\n",ans);

}return 0;}/*

71 2 8 2

1 3 2 2

3 6 4 0

2 4 3 0

2 5 10 0

5 7 12 0

*/

BZOJ3684 大朋友和多叉樹

我們的大朋友很喜歡電腦科學,而且尤其喜歡多叉樹。對於一棵帶有正整數點權的有根多叉樹,如果它滿足這樣的性質,我們的大朋友就會將其稱作神犇的 點權為1的結點是葉子結點 對於任一點權大於1的結點u,u的孩子數目deg u 屬於集合d,且u的點權等於這些孩子結點的點權之和。給出乙個整數s,你能求出根節點權值...

ZOJ 2112 線段樹套平衡樹

題目大意 給定乙個數列,定義兩種操作 1 修改第n個數的值 2 求 l,r 區間內第k大的值。方法 線段樹維護區間,treap樹維護第k大 splay當然也可以 樹套樹第一題。沒想到真的是每個線段樹上的節點建一棵平衡樹。然後修改值就是在所有相關區間內的平衡樹里,erase乙個值再insert乙個值。...

ZOJ 1610 思維 線段樹

zoj 1610 思維 include include using namespace std const int maxn 1e4 int n int e maxn 3 int color maxn int ans maxn int main for int i 1 i 8000 i 遍歷每乙個位...