测试点3错误分析
- 看了一下别人的分析原因,说是输入全是0,输出为0.00,而我的代码输出并没有这个问题。
- 最后发现是结构体设计错误,库存数量设为int导致精度出现问题,改为double后解决。
附上代码
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
#include<cmath>
using namespace std;
struct pie{
double number;//数量
double count;//总价
double money;//单价
}p[1050];
bool cmp(pie&a,pie&b){
return a.money>b.money;
}
int main(){
int i,n,num;
double count=0.0;
cin>>n>>num;
for(i=0;i<n;i++){
cin>>p[i].number;
}
for(i=0;i<n;i++){
cin>>p[i].count;
}
for(i=0;i<n;i++){
p[i].money=p[i].count/p[i].number;
}
sort(p,p+n,cmp);
for(i=0;i<n;i++){
if(num>=p[i].number){
count+=p[i].count;
num-=p[i].number;
}else{
count+=num*p[i].money;
num=0.0;
break;
}
}
printf("%.2f\n",count);
return 0;
}