题目:

代码:
#include <iostream>
using namespace std;
#include<algorithm>
#include<stdlib.h>#define M 1000005//结构体,重量,价值,价重比
struct three
{double w;double v;double p;
}s[M];//s //比较原则函数:按照three的性价比排列
bool cmp(three t1,three t2)
{return t1.p>t2.p;
}int main()
{
//初始化double sum=0;//宝物总价值int n;cout<<"宝物数量\n";cin>>n;double m;cout<<"驴子载重\n";cin>>m;//宝物信息for(int i=0;i<n;i++){cin>>s[i].w>>s[i].v;s[i].p=s[i].v/s[i].w;}//按照three的性价比排序s[M]sort(s,s+n,cmp);for(int i=0;i<n;i++){if(s[i].w<m){m-=s[i].w;sum+=s[i].v; }else{//分割宝物sum+=s[i].p*m;break;}}cout<<"装入宝物价值为:"<<sum<<endl;return 0;
}
样例:
