1020 月饼## 找不到测试点
这里是引用
23分卡点:
没有考虑到 需求可能大于总的库存的情况
以下代码为满分代码
#include
#include
#include
using namespace std;
class goods{
public:
double store;
double price;
double rate(){
return price/store;
}
};
bool cmp(goods a ,goods b);
int main(){
int sum_kind ;
int D ;
cin>>sum_kind>>D ;
goods Goods[sum_kind];
double store[sum_kind] ;
double price[sum_kind] ;
double rate[sum_kind];
double profits = 0 ;
for(int i = 0 ; i < sum_kind ; i++){
cin>>store[i];
Goods[i].store = store[i];
}
for(int i = 0 ; i < sum_kind ; i++){
cin>>price[i];
Goods[i].price = price[i];
}
sort(Goods,Goods+sum_kind,cmp);
int index = 0;
while(sum_kind){
if(Goods[index].store>=D){
profits = profits + D * Goods[index].price / Goods[index].store;
break;
}
else{
profits += Goods[index].price;
D -= Goods[index++].store;
}
sum_kind--;
}//注意此处的循环结束条件
cout<<fixed<<setprecision(2)<< profits<<endl;
return 0;
}
bool cmp(goods a ,goods b){
return a.rate() > b.rate();
}