qscoj 喵哈哈村的盧西奧 樹形DP難)

2021-07-29 22:33:18 字數 976 閱讀 1195

描述為了拯救喵哈哈村,這個世界必須要存在英雄。

一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題:

他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。

他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少種。

兩種方案被看做不同的方案,當且僅當形成方案的2個節點不完全相同。

輸入每個輸入檔案包含多組輸入,在輸入的第一行為乙個整數t,表示資料的組數。

每組輸入的第一行為乙個整數n,表示給出的這棵樹的節點數。

接下來n行,依次描述結點1~n,其中第i行為兩個整數vi和pi,分別描述這個節點的權值和其父親節點的編號。

父親節點編號為0的節點為這棵樹的根節點。

滿足3<=n<=100000, |vi|<=100, t<=10

輸出對於每組輸入,輸出一行ans,表示方案的數量。

樣例輸入1

複製

2

31 0

1 11 2

41 0

1 11 2

1 3

樣例輸出1

1

0

一開始沒有看到v可以取負數,gg

分成三顆子樹滿足條件,這兩個節點在同乙個根節點上,或者不在同乙個根節點上。。。注意累加方案有技巧

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

typedef long long ll;

const int n = 1100000;

int v[n], sum[n], f[n];

vectorp[n];

ll ans, t1, t2, s;

void get(int u)

{ sum[u]=v[u];

for(int i=0;i

qscoj 喵哈哈村的盧西奧

描述為了拯救喵哈哈村,這個世界必須要存在英雄。一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題 他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少種...

喵哈哈村的盧西奧

描述 為了拯救喵哈哈村,這個世界必須要存在英雄。一名叫做盧西奧的英雄站了出來!他現在面臨乙個難題 他被要求將一棵樹拆成3份,使得每乙份中所有節點的權值和相等。他希望知道,對於一棵給定的有根樹,在選取其中2個非根節點並將它們與它們的父親節點分開後,所形成的三棵子樹的節點權值之和能夠兩兩相等的方案有多少...

qscoj 喵哈哈村的狼人殺大戰 5

描述喵哈哈村最近熱衷於玩乙個叫做狼人殺的遊戲!沈寶寶同學今天他抽到的是狼人的身份,按照他的一貫玩法,他喜歡一開始就自爆,讓大家都不能說話,可謂心狠手辣。於是他早早的就出去了。但是他現在很無聊,於是他出了一道題給自己玩。如果乙個數的二進位制表示中有k個1的話,那麼這個就是就是k th數。比如有10 1...