先把物品按照单位重量的价值降序排序,然后依次装入背包。 如果背包容量不小于当前要装的物品重量,就全部装入,如果小于,那就剩余多少容量就装多少容量的当前物品。
#include<bits/stdc++.h>
using namespace std;
struct jinbi{
double m;
double v;
}a[110];
bool cmp(jinbi x,jinbi y)
{
return x.v/x.m>y.v/y.m;
}
int main()
{
int n,t;
double sum=0;
cin >> n >> t;
for(int i=0;i<n;i++)
{
cin >> a[i].m >> a[i].v ;
}
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
if(t>=a[i].m)
{
sum+=a[i].v;
t-=a[i].m;
}
else
{
sum+=t*a[i].v/a[i].m;
break;
}
}
printf("%.2lf",sum);
return 0;
}
标签:背包,jinbi,int,double,sum,深基,P2240,C++
From: https://blog.51cto.com/u_16342340/8470506