我們比較熟悉二叉樹,題目中給出的是一棵多叉樹,我們需要將這可二叉樹改造成二叉樹。
二叉樹可以為這樣的:
父親結點左邊儲存兒子,右邊儲存兄弟。
有兩種改造方法:
①if(tree[x].l==0)tree[x].l=y;
else
②tree[y].r =tree[x].l;
tree[x].l = y;
之後再考慮轉移,對於這個題來說,我們想要得到關於父節點的資訊,就必須先處理完它的左右子樹。
注意對於每個節點,這個節點可以不取而直接去取它的兄弟。
先處理每個節點的兄弟,在每個節點列舉向左可以放多少人,向右可以放多少人,更新過程遞迴實現。
#include #include#include
#include
using
namespace
std;
intn,m;
int a[1006],dp[1006][1006
];struct
ahahtree[
1006
<<2
];int dfs(int k,int
sum)
dp[k][sum]=ans;
return
ans;
}int
main()
}printf("%d
",dfs(tree[0
].l,m));
}
codevs1486愚蠢的礦工(樹形dp)
時間限制 1 s 空間限制 128000 kb stupid 家族得知在hyc家的後花園裡的 花壇處,向北走3步,向西走3步,再向北走3步,向東走3步,再向北走6步,向東走3步,向南走12步,再向西走2步 就能找到寶藏的入口,而且寶藏都是藏在山里的,必須挖出來,於是stupid家族派狗狗帶領礦工隊去...
Codevs 1503 愚蠢的寵物
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常複雜。狗狗家前院...
T1503 愚蠢的寵物 codevs
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題目描述 description 大家都知道,sheep有兩隻可愛的寵物 乙隻叫神牛,乙隻叫神菜 有一天,sheep帶著兩隻寵物到狗狗家時,這兩隻可愛的寵物竟然迷路了 狗狗的家因為常常遭到貓貓的攻擊,所以不得不把家裡前院的路修得非常...