自己测试没问题,一提交全WA
#include "bits/stdc++.h"
using namespace std;
struct BaoZang{
int duishu,jiazhi;
double bili;
};
bool cmp(BaoZang a,BaoZang b){
return a.duishu*b.jiazhi>b.jiazhi*a.duishu;//价值排序
}
main(){
int num,BB;
cin >> num >> BB;
BaoZang Bz[num];
for(int i = 0;i<num;i++){
cin >> Bz[i].duishu >> Bz[i].jiazhi;
Bz[i].bili = Bz[i].jiazhi / Bz[i].duishu;
}
sort(Bz,Bz+num,cmp);
double result = 0;//当前背包价值
int current_rl = 0;//当前背包容量
int flag = 0;
while(current_rl<BB){
//cout << current_rl << "\n";
//如果背包能装下那就装
if(current_rl+Bz[flag].duishu <= BB){
current_rl += Bz[flag].duishu;
result += Bz[flag].jiazhi;
//cout << result << "\n";
}else{
//计算背包容量
int c = BB-current_rl;
current_rl += c;
result +=1.0*Bz[flag].bili*c;
break;
}
flag++;
}
//cout << result;
printf("%.2lf",result);
return 0;
}