您的位置:首页 > 其它

1070. Mooncake (25)

2016-06-22 12:01 225 查看
IDEA

1.首先n和d为正整数,分别表示月饼数和需求量;

第二行是每种月饼的库存,为正数,不一定是正数,用float型;

2.可能存在总库存小于需求d的情况



CODE

#include<iostream>
#include<vector>
#include<algorithm>
#include<iomanip>
#include<fstream>
using namespace std;
#define Max 1001
struct Cake{
float num;//库存 ,可能不是整数
float price;//总价
float avg_price;//单价
};
int cmp(Cake c1,Cake c2){
return c1.avg_price>c2.avg_price;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
#endif

int n,d;//d总需求 ,n&d正整数
float sum=0;
vector<Cake> vec(Max);
cin>>n>>d;
for(int i=0;i<n;i++){
cin>>vec[i].num;
}
for(int i=0;i<n;i++){
cin>>vec[i].price;
vec[i].avg_price=vec[i].price/vec[i].num;
}
sort(vec.begin(),vec.end(),cmp);
int i=0;
//可能存在库存不够需求的情况,即d一直>0,但是i可能=n了已经
while(d&&i<n){
if(d>=vec[i].num){
sum+=vec[i].price;
d-=vec[i].num;
i++;
}else{
sum+=d*vec[i].avg_price;
break;
}
}
cout<<fixed<<setprecision(2)<<sum;

#ifndef ONLINE_JUDGE
fclose(stdin);
#endif
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  PAT