视频链接:C129 并查集+01背包 P1455 搭配购买_哔哩哔哩_bilibili
E08【模板】背包DP 01背包_哔哩哔哩_bilibili
P1455 搭配购买 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
// 并查集+01背包 #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N=10005; int n,m,V; int p[N]; int v[N],w[N],f[N]; int find(int x){ return p[x]==x?x:p[x]=find(p[x]); } int main(){ ios::sync_with_stdio(0); cin>>n>>m>>V; for(int i=1;i<=n;i++){ //n个物品 cin>>v[i]>>w[i]; //体积和价值 p[i]=i; } for(int i=1;i<=m;i++){ //m个搭配 int x,y;cin>>x>>y; x=find(x),y=find(y); if(x!=y){ p[x]=y; v[y]+=v[x]; //捆绑的体积 w[y]+=w[x]; //捆绑的价值 } } for(int i=1;i<=n;i++) //物品 if(p[i]==i) //物品为根 for(int j=V;j>=v[i];j--) //体积 f[j]=max(f[j],f[j-v[i]]+w[i]); cout<<f[V]; }
标签:P1455,01,int,查集,背包,哔哩,find From: https://www.cnblogs.com/dx123/p/18211664