P2515 HAOI2010 軟體安裝

2022-03-30 07:29:56 字數 1160 閱讀 2668

傻了。。

思路:$scc$縮點,樹上揹包。

提交:2次(無語。。建邊建錯了)

思路:關係可能會形成環,而整個環是乙個整體(要選就選環上所有點,否則整個不選),所以我們先把所有的環縮點,然後便形成了一棵樹(乙個點不可能有兩個父親),然後跑樹上揹包。

**:

#include#include

using

namespace

std;

#define ull unsigned long long

#define ll long long

#define r register int

#define pause (for(r i=1;i<=10000000000;++i))

#define in freopen("noipak++.in","r",stdin)

#define out freopen("out.out","w",stdout)

namespace

fread inline

bool isempty(const

char& ch)

inline

void gs(char*s)

} using fread::g; using

fread::gs;

namespace

luitaryi

inline

void tarjan(int

u)

else

if(vis[v]) low[u]=min(low[u],dfn[v]);

} if(dfn[u]==low[u])

while(tmp!=u);

}}int f[n][510

];int

w[n],v[n];

intvv[n],nn[n],ff[n],d[n],cnte;

inline

void adde(int u,int v)

inline

void

solve()

}}inline

void dfs(int

u) }

inline

void

main()

}signed main()

2019.07.20

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 ...

P2515 HAOI2010 軟體安裝

給你 n 個可能有依賴關係的物品,物品的價值為 v i 重量為 w i 揹包大小為 m 要使裝的物品價值最大。如果確保這些依賴關係一定是棵樹的話,那麼我們就可以愉快地進行樹形dp。這裡複習一下樹形dp 這裡設 dp u j 表示以 u 為根的子樹中裝了重量為 j 的最大價值。在dfs的時候順便更新 ...