背包问题
#include <iostream>
#include <algorithm>
using namespace std;
struct bag{
int weight;
int value;
double proportion;
}a[100];
int m;
bool cmp(bag b1,bag b2)
{
return b1.proportion>=b2.proportion;
}
int go(int v)
{
int maxx=0;
for(int i=1;i<=m;i++)
{
if(v>a[i].weight)
{
maxx+=a[i].value;
v-=a[i].weight;
}
else if(v==a[i].weight)
{
maxx+=a[i].value;
break;
}
else if(v<a[i].weight&&v>0)
{
maxx+=a[i].proportion*v;
break;
}
}
return maxx;
}
int main()
{
int v;
cin>>v;
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>a[i].weight>>a[i].value;
a[i].proportion=a[i].value/a[i].weight;
}
sort(a+1,a+m+1,cmp);
int maxx=go(v);
cout<<"max="<<maxx<<endl;
}