洛谷原题:https://www.luogu.com.cn/problem/P2240
贪心算法,先读入并计算性价比,根据性价比排序后从头开始装包,能过样例但是测试数据WA
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int N,T;
int m[102],v[102];
double e[102];
double M=0;
double tanxin(int N,int T){
for(int i=1;i<N;i++)for(int j=N;j>1;j--)if(e[j]>e[j-1]){
swap(e[j],e[j-1]);
swap(m[j],m[j-1]);
swap(v[j],v[j-1]);
}
for(int i=1;i<=N;i++){
if(m[i]<=T){
M+=v[i];
T-=m[i];
}else{
M+=e[i]*T;
break;
}
}
return M;
}
int main(){
cin>>N>>T;
for(int i=1;i<=N;i++){
cin>>m[i]>>v[i];
e[i]=v[i]/m[i];
}
printf("%.2lf",tanxin(N,T));
return 0;
}