阿里巴巴与十四大盗
阿里巴巴跟着一伙绑匪来到了一个山洞,大盗大喊“芝麻开门”,山洞门就开了。阿里巴巴打算悄悄用小毛驴把宝物送给乡亲们度过灾难。
宝物有n种,价值为Vi,重量为Wi,但阿里巴巴的小毛驴只能载重m。如果宝物可以分割,那么请问阿里巴巴能带出价值多少的宝物呢(每种宝物只有一个)。
#include<bits/stdc++.h>
using namespace std;
int n,m;
double ans;
double wv[101];
double w[101][2];
double v[101];
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>w[i][0]>>v[i];
wv[i]=v[i]/w[i][0];
w[i][1]=wv[i];
}
sort(wv,wv+10,greater<int>());
for(int i=0;i<n;i++){
for(int j=0;i<n;j++){
if(w[j][1]==wv[i]){
double k=w[i][0];
w[i][0]=w[j][0];
w[j][0]=k;
break;
}
}
}
for(int i=0;i<n;i++){
if(m-w[i][0]>=0){
ans+=wv[i]*w[i][0];
m-=w[i][0];
}
else{
if(m>0) ans+=wv[i]*m;
break;
}
}
cout<<ans;
return 0;
}