PAT 1070. Mooncake

来源:互联网 发布:ed hardy正品网络购买 编辑:程序博客网 时间:2024/05/21 22:33
之前一直在一组测试数据上WA,之后将amount从 int 改成 double 就AC了,可能是除法时的精度问题吧。
#include <iostream>#include<stdio.h>#include<stdlib.h>#include<vector>#include<cstring>#include<algorithm>using namespace std;//PAT 1070int N;int D;double ans;class cake{public:    double amount;    double prices;    double value;public:    cake()    {        amount=0;        prices=0;        value=0;    }    cake( double  a,double p,double v)    {        amount=a;        prices=p;        value=v;    }       bool operator < (const cake& nd) const        {            return value> nd.value;        }};bool cmp(cake c1,cake c2){    return c1.value>c2.value;}cake a[1010];void input(){    scanf("%d %d",&N,&D);    for(int i=0;i<N;i++)    {        scanf("%lf",&a[i].amount);    }    for(int i=0;i<N;i++)    {        scanf("%lf",&a[i].prices);        a[i].value=a[i].prices/a[i].amount;    }}int main(){    //freopen("input.txt","r",stdin);    input();    sort(a,a+N);    for(int i=0;i<N;i++)    {        if(D>=a[i].amount)        {            ans+=a[i].prices;            D-=a[i].amount;        }        else        {            ans+=a[i].value*D;            break;        }    }    printf("%.2lf\n",ans);    return 0;}


0 0
原创粉丝点击