原题地址:点击打开链接
这一题的坑在于题目,题目里
“每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、
以及不超过500(以万吨为单位)的正整数D表示市场最大需求量。
随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);
最后一行给出N个正数表示每种月饼的总售价(以亿元为单位)。数字间以空格分隔。“”
从正整数到正数的变化,很容易就忘了,结果导致一直有一个测试点过不掉
讲库存量与总售价改成double类型后一次就过了
另外就是这道题应该用结构体排序(sort函数)来写
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
struct item {
double quatity,sale,per;
//per为单价
};
item it[1050];
bool comp(const item &a,const item &b) {
return a.per > b.per;
}
int main(void) {
int N {0},D {0};
double revenue {0};
//N for categories , D for Num of needing
//revenue 为总利润
cin>>N>>D;
for(int i = 0; i <N; i++) {
cin>>it[i].quatity;
}
for(int i = 0; i <N; i++) {
cin>>it[i].sale;
it[i].per = it[i].sale/(it[i].quatity *1.0) ;
}
sort (it,it + N,comp);
for(int i = 0; i <N && D > 0; i++) {
if (it[i].quatity <= D ) {
D -= it[i].quatity;
revenue += it[i].sale;
} else {
revenue += D*it[i].per;
break;
}
}
printf("%.2lf",revenue);
return 0;
}