傳送門
先用並查集將其集合化,然後尋找與1乙個集合的所有人。
因為每個人只可以使用一次,所以在dp的迴圈中,把人數的迴圈放在外面。
#include
using
namespace std;
const
int mx=
1e4+9;
int t,n,m,c,fa[mx]
,u,v,k,t[mx]
,ans;
struct nodepeo[mx]
,use[mx]
;int
fin(
int u)
void
link
(int u,
int v)
}int
main()
k=0,ans=0;
for(
int i=
2; i<=n ; i++)if
(fin
(i)==1)
use[
++k]
=peo[i]
;for
(int i=
1; i<=k ; i++
)// 把人數的迴圈放在外面
for(
int j=c ; j>=use[i]
.hp ; j--
) t[j]
=max
(t[j]
,t[j-use[i]
.hp]
+use[i]
.val)
;printf
("%d\n"
,t[c]);
}return0;
}
簡單並查集
哈爾濱理工大學oj 1160 吸血鬼 description remilia是 東方紅魔館 中首次亮相的吸血鬼角色,是有著500歲年齡的吸血鬼領主。作為紅魔館的主人,有著高貴和威嚴的氣質,不過也經常任性和孩子氣。關於吸血鬼有很多傳說。吸血鬼是乙個血族,有著嚴格的等級。吸血鬼會嚴格聽從血之主人的命令。...
並查集 並查集
本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...
UPC H Team 並查集和DP
輸入 n,m 給 3 n個人的能力值,和m 對 關係,有關係的人必須組成一隊,一隊只能3人 2 1 1 2 3 4 5 6 3 4整理後的結果是 單人的 1 2 5 6 兩人一組的是 3,4 要想組成一隊,就是 1,2,5 3,4,6 這是一種組法 組成隊伍後的能力值是最小的那個人的能力值,所有隊伍...