背包问题:贪心写直接先取价值最高的,,,
代码:
#include<iostream>
#include<string>
#include<algorithm>
#include<cstring>
using namespace std;
struct s{
int v,w;
double k;
}a[1100];
bool cmp(s &a1,s &a2)
{
return a1.k>a2.k;
}
int main()
{
int n,r;
double maxx=0;
cin>>n>>r;
for(int i=0;i<n;i++)
cin>>a[i].v;//每个物品的价值
for(int i=0;i<n;i++)
{
cin>>a[i].w;//每个物品的重量
a[i].k=a[i].v*1.0/a[i].w;
}
sort(a,a+n,cmp);
for(int i=0;i<n&&r>0;i++)
{
if(a[i].w<=r)
{
r-=a[i].w;
maxx+=a[i].v;
}
else
{
maxx+=r*a[i].k;
break;
}
}
cout<<maxx<<endl;
return 0;
}