PAT_B 20

Posted chuan-chuan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

 

以上是关于PAT_B 20的主要内容,如果未能解决你的问题,请参考以下文章

PAT_B_1003 我要通过!

PAT_B_1013 数素数

PAT_B_1002 写出这个数

PAT_B_1072 开学寄语

PAT_B_1004 成绩排名

每日一练_PAT_B1001