題目描述 description題目皮爾是乙個出了名的盜畫者,他經過數月的精心準備,打算到藝術館盜畫。藝術館的結構,每條走廊要麼分叉為二條走廊,要麼通向乙個展覽室。皮爾知道每個展室裡藏畫的數量,並且他精確地測量了通過每條走廊的時間,由於經驗老道,他拿下一副畫需要5秒的時間。你的任務是設計乙個程式,計算在警察趕來之前(警察到達時皮爾回到了入口也算),他最多能偷到多少幅畫。
輸入描述 input description
第1行是警察趕到得時間,以s為單位。第2行描述了藝術館得結構,是一串非負整數,成對地出現:每一對得第乙個數是走過一條走廊得時間,第2個數是它末端得藏畫數量;如果第2個數是0,那麼說明這條走廊分叉為兩條另外得走廊。資料按照深度優先得次序給出,請看樣例
輸出描述 output description
輸出偷到得畫得數量
樣例輸入 sample input607
0803
114210
01246
2樣例輸出 sample output
2資料範圍及提示 data size &hint
s<=600
走廊的數目
<=100
(樣例見圖)
芒果君:其實這道題的繼承關係很明顯,但不太好表示狀態。我們把時間抽象為揹包的體積,用f[i][j]表示,以i為根,在j時間內的最優解。這時將各個父節點和葉節點分開處理。葉結點類似完全揹包,父節點需要做二維決策,第一維是能使用的時間段(通過花費的時間到總時間),第二維將兩個子結點做時間分配,列舉找到最大值的方案,最後輸出f[1][t]。(如果你在洛谷交,應該一開始t-=1)
1 #include2 #include3using
namespace
std;
4int sum,f[1010][1010
],t;
5void dfs(intx)6
18else
for(int i=v*2;i<=t;++i) f[x][i]=min(w,(i-v*2)/5
); 19}20
intmain()
21
wikioi p1163 訪問藝術館
記得wikioi開站不久的時候,我做這題被嚇住了。後來發現沒什麼難度。首先dfs序記錄結點資訊。left為左孩子 right為右孩子 time表示走廊的時間 cost表示價值 如果為0 表示為分岔口 int dfs 這題要詳細說一下。如果記錄到leaf結點 那麼記錄下編號old leaf leaf ...
wikioi 1163 訪問藝術館 樹形dp
遞迴建樹,由題知該樹是一棵二叉樹,且除根節點外其他點的度為0或2。dp i j 表示來到第i個走廊 還未走過這條走廊 還剩下j時間,能拿到最大的畫的數量。dp i j max dp i j dp lson i k dp rson last time k include includeusing na...
上海玉佛禪寺陳家泠佛教藝術館開館
上海玉佛禪寺陳家泠佛教藝術館開館 藝術與宗教碰撞與融合 上海1月13日電 記者 陳靜 由上海玉佛禪寺與知名畫家陳家泠共同建立的 上海玉佛禪寺陳家泠佛教藝術館 13日在上海玉佛禪寺開館。畢業於浙江美術學院的陳家泠,師從潘天壽 陸儼少,是中國國家畫院首聘研究員,中國美術家協會會員,上海大學美術學院國畫系...