【结构体排序+STL容器】HDU-1070 Milk

本文介绍了一个关于结构体排序和STLvector使用的编程案例。重点在于如何定义结构体成员变量,如字符串类型的名字、double类型的每升价格和总量,并通过比较函数实现结构体数组的排序。同时,文章详细解释了如何使用STLvector存储和操作结构体数据,包括向vector中添加元素、清空vector、使用sort函数进行排序等。特别注意的是,对于超过1000mL的牛奶,其价格计算方式有所不同,需按总价除以5天来计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
在这里插入图片描述

注解

1、结构体排序。注意perprice,每天的价格,必须是double类型。
2、STL vector的用法要熟悉。
3、超过1000mL的只喝五天,每天的价格要按总价除以5天来计算,因为最多只能喝5天。
4、如果每天的价格相同,要输出总容量大的。

代码

#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>

using namespace std;

struct Milk {
    string name;
    double perPrice;
    double vol;
};

int compare(Milk a, Milk b) {
    if(a.perPrice!=b.perPrice) {
        return a.perPrice<b.perPrice;
    } else {
        return a.vol>b.vol;
    }

}

int main() {

    int T;
    cin>>T;
    for(int i=0; i<T; i++) {
        int N;
        cin>>N;
        vector<Milk> v;
        v.clear();
        for(int j=0; j<N; j++) {
            Milk m;
            cin>>m.name;
            int price;
            cin>>price;
            int vol;
            cin>>m.vol;
            if(m.vol>=1000) {
                m.perPrice = price / 5.0;
                v.push_back(m);
            } else if(m.vol>=200) {
                m.perPrice = price / floor(m.vol/200);
                v.push_back(m);
            }
        }
        sort(v.begin(), v.end(), compare);
        cout<<v[0].name<<endl;
    }

    return 0;
}

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值