码迷,mamicode.com
首页 > 其他好文 > 详细

PAT_B 20

时间:2019-08-30 17:15:57      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:tor   幸好   使用   单体   freopen   简单的   div   txt   iostream   

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

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

标签:tor   幸好   使用   单体   freopen   简单的   div   txt   iostream   

原文地址:https://www.cnblogs.com/chuan-chuan/p/11435987.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!