傻了。。
思路:$scc$縮點,樹上揹包。
提交:2次(無語。。建邊建錯了)
思路:關係可能會形成環,而整個環是乙個整體(要選就選環上所有點,否則整個不選),所以我們先把所有的環縮點,然後便形成了一棵樹(乙個點不可能有兩個父親),然後跑樹上揹包。
**:
#include#includeusing
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的時候順便更新 ...