PAT_B 20

这道题就是简单的贪心,有几个注意点:

1.又是一个单体有多个属性(即月饼有总量,总价,单价几个属性),这个时候可以考虑使用struct结构,我还是傻傻使用pair,还是没有养成习惯,幸好这道题存下来两个属性就可以,所以pair还能够发挥作用

2.依旧是涉及到排序,即使用sort,自己定义cmp函数

3.有一个填空,之前有一个测试点一直过不去,原来是要用double的我用了int,精度达不到,所以读题的时候还是要确定好数据类型,一定要严谨一点,不要动不动就是用int

#include<iostream>
#include<stdio.h>
#include<utility>
#include<vector>
#include<algorithm>
using namespace std;

bool cmp(pair<double,double> a,pair<double,double> b){
    return a.second>b.second;
}

int main(){
    freopen("in.txt","r",stdin);
    
    vector<pair<double,double>> v;                                                                                                                                  
    int k;
    double need;
    scanf("%d %lf",&k,&need);
    double a;
    double b;
    for(int i=0;i!=k;++i){
        scanf("%lf",&a);
        v.push_back(make_pair(a,0));
    }
    for(int i=0;i!=k;++i){
        scanf("%lf",&b);
        v[i].second=b/v[i].first;
    }
    sort(v.begin(),v.end(),cmp);
    double m=0;
    for(int i=0;i<k;++i){
        if(need>0){
            if(need-v[i].first>=0){
                m+=v[i].first*v[i].second;
            }
            else m+=need*v[i].second;
            need-=v[i].first;
        }
        else break;
    }
    printf("%.2f",m);
    return 0;
}

 

posted on 2019-08-30 17:02  川川——叮叮咚咚  阅读(116)  评论(0编辑  收藏  举报