题目分析:很裸的完全背包!用sum做总价值之和,C=sum/2 做背包容量,另外用价值做背包的体积,就转化为多重背包,就是价值为w[i],体积v[i],数量为n[i]的N个背包放到容量为C=sum/2,的背包中,所的到 的最大价值,A所得的价值为sum-dp[C],B 为dp[C]
#include<iostream>
#include<cstdio>
using namespace std;
int v[1010],w[1010],n[1010],dp[1000000];
int main()
{
int N;
while(scanf("%d",&N)!=EOF)
{
if(N<0)
break;
int sum=0,C;
for(int i=1;i<=N;i++)
{
scanf("%d %d",&w[i......
阅读全文