※ 引述《CorruptAngel (微笑面具)》之銘言:
: 怎樣判定"所有共用子樹"@@?
: ※ 引述《denehs (DE)》之銘言:
: : 我解釋一下我實際coding時的作法
: : 對於每一個node,我給他們各兩個值,O代表將這個node拿掉
: : 這個node+這個node以下所能貢獻的最大value
: : X則是不拿
: : 則
: : O是他底下一層nodes每個OX取最大,
: : X我則是直接設0
: : 然後做的順序,隨意找一個node往下做,然後再找一個node(沒做過的)往下做
: : 直到做完,如果碰到共用子樹,且共用的子樹已被處理過
: : 就直接使用那顆子樹的結果...
: : XD~~~忘了把code留下(好像也沒辦法留@@?)
: : 真是抱歉,不會用很好的方法解釋@@"....
不需要判定@@"....
我的意思是說,跑到已經跑過的node就讓那個node為之前跑取or不取的狀態...
然後當一個node底下level所能貢獻的最大的value合<0時,就不娶那個node
並且用第迴將那個node的子樹通通設為不取
(btw,我不確定我的方法是對的:P)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.240.181