第一次提交答案错误,原来是没有精确到小数点后两位,淦,本题唯一值得说道说道的就是sort函数了,但也就是普通的结构体排序固定语法,记住就好。
贴个AC代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
int N, D;
struct mooncake{
double sell; //总价
double stock; //库存
double price; //单价
}moke[1010];
bool cmp(mooncake m1, mooncake m2){
return m1.price > m2.price;
}
int main(){
scanf("%d %d", &N, &D);
for(int i=0;i<N;i++){
scanf("%lf", &moke[i].stock);
}
for(int i=0;i<N;i++){
scanf("%lf", &moke[i].sell);
}
for(int i=0;i<N;i++){
moke[i].price = moke[i].sell / moke[i].stock;
}
sort(moke,moke+N,cmp);
double bonous = 0;
for (int i=0;i<N;i++){
if(D>=moke[i].stock){
// printf("加入月饼的总价为 %lf\n", moke[i].sell);
D -= moke[i].stock;
bonous += moke[i].sell;
}else{
bonous += moke[i].price*D;
break;
}
}
printf("%.2lf", bonous);
}