P2515 HAOI2010 軟體安裝

2022-08-12 21:24:13 字數 771 閱讀 2031

給你\(n\)個可能有依賴關係的物品,物品的價值為\(v_i\),重量為\(w_i\),揹包大小為\(m\),要使裝的物品價值最大。

如果確保這些依賴關係一定是棵樹的話,那麼我們就可以愉快地進行樹形dp。

這裡複習一下樹形dp:這裡設\(dp[u][j]\)表示以\(u\)為根的子樹中裝了重量為\(j\)的最大價值。

在dfs的時候順便更新:

\[dp[u][j] = max(dp[u][j - k], dp[v][k])

\]給出**康康8:

void dfs(int u) }}

}

注意:因為這裡是01揹包,所以在列舉\(j\)的時候照樣要倒序列舉。

然而這道題不是與p2014重題的。可能出現環形依賴。

其實也很簡單:環形依賴的物品,要麼全選,要麼都不選,我們直接縮成乙個點不就完事了?

還有:就算縮點了,建出來的圖也不一定是一棵樹,可能是森林!

解決辦法很顯然(但我忘了):建立超級源點作為根,與每一顆森林的根連線,就變成了一棵樹。

整體的做法就說完了。

你以為這樣就完了嗎?

自信滿滿地交上去,結果只有10pts:你縮點後的圖建得不好!

我最初寫的建新圖是像普通縮點那樣去寫的,但是顯然有鍋:可能會有重邊。

而樹又不允許有重邊,不然算出來的答案全錯了。所以是不行的。

所以我們記錄原圖每個點的父親,只要顏色不同,並且爸爸不是0,那麼就連邊。

最終的答案是\(dp[s][m]\)。

**就不給辣qwq

P2515 HAOI2010 軟體安裝

傻了。思路 scc 縮點,樹上揹包。提交 2次 無語。建邊建錯了 思路 關係可能會形成環,而整個環是乙個整體 要選就選環上所有點,否則整個不選 所以我們先把所有的環縮點,然後便形成了一棵樹 乙個點不可能有兩個父親 然後跑樹上揹包。include include using namespace std...

P2515 HAOI2010 軟體安裝

現在我們的手頭有n個軟體,對於乙個軟體i,它要占用wi的磁碟空間,它的價值為vi。我們希望從中選擇一些軟體安裝到一台磁碟容量為m計算機上,使得這些軟體的價值盡可能大 即vi的和最大 但是現在有個問題 軟體之間存在依賴關係,即軟體i只有在安裝了軟體j 包括軟體j的直接或間接依賴 的情況下才能正確工作 ...

P2515 HAOI2010 軟體安裝

link 現在我們的手頭有 n 個軟體,對於乙個軟體 i 它要占用 w i 的磁碟空間,它的價值 v i 我們希望從中選擇一些軟體安裝到一台磁碟容量為 m 計算機上,使得這些軟體的價值盡可能大 即 v i 的和最大 但是現在有個問題 軟體之間存在依賴關係,即軟體i只有在安裝了軟體 j 包括軟體 j ...