摘要:
1 //并查集+01背包 2 //用并查集把几件物品合为一件 3 #include 4 using namespace std; 5 const int maxn=10005; 6 const int maxv=10005; 7 int n,m,v_tot,tot,v[maxn],w[maxn],dp[maxv]; 8 struct node{ 9 int fa,c... 阅读全文
摘要:
1 //依赖关系最多2种 可以用分组背包水过 2 #include 3 using namespace std; 4 #define w first 5 #define v second 6 const int maxv=32005; 7 const int maxn=65; 8 int n,m,k,tot,f[maxv],ID[maxn]; 9 vector >d[m... 阅读全文
摘要:
1 //分组背包 2 #include 3 using namespace std; 4 int n,m,k,tot,f[1005];//tot-组数 5 vector >d[105]; 6 int main() 7 { 8 scanf("%d%d",&m,&n); 9 for(int i=1,x,y,z;i=0;--j)//注意三层循环顺序 12 ... 阅读全文
摘要:
1 //二维费用背包 2 #include 3 using namespace std; 4 const int maxn=55; 5 const int maxv1=405; 6 const int maxv2=405; 7 int v1[maxn],v2[maxn],w[maxn],n,v1_tot,v2_tot,f[maxv1][maxv2]; 8 int main() ... 阅读全文
摘要:
1 //01背包 价值等于重要度乘体积 2 #include 3 using namespace std; 4 const int maxv=30005; 5 const int maxn=10005; 6 int n,m,v[maxn],w[maxn],f[maxv]; 7 int main() 8 { 9 scanf("%d%d",&m,&n); 10 f... 阅读全文
摘要:
1 //完全背包 2 #include 3 using namespace std; 4 const int maxv=100005; 5 const int maxn=10005; 6 int n,m,v[maxn],w[maxn],f[maxv]; 7 int main() 8 { 9 scanf("%d%d",&m,&n); 10 for(int i=1... 阅读全文
摘要:
1 //求方案数 定义状态f[i][j] 用前i件物品恰好放够体积为j的背包 方案数 2 #include 3 using namespace std; 4 const int maxm=10005; 5 const int maxn=105; 6 int n,m,v[maxn],f[maxn][maxm]; 7 int main() 8 { 9 scanf("%d%... 阅读全文
摘要:
1 //01背包 2 #include 3 using namespace std; 4 const int maxv=1005; 5 const int maxn=105; 6 int n,v_tot,v[maxn],w[maxn],f[maxv],sumv,bound; 7 int main() 8 { 9 scanf("%d%d",&v_tot,&n); 10 ... 阅读全文