其他分享
首页 > 其他分享> > PAT乙1020

PAT乙1020

作者:互联网

#include <bits/stdc++.h>
using namespace std;

struct obj
{
    double t, price, unit_price; //每种吨数 总价 单价
};

int main()
{
    int num = 0, t = 0; //种类 需要的总吨数
    cin >> num >> t;
    vector<obj> moon_cake(num);
    double temp;
    for (int i = 0; i < num; i++)
    {
        cin >> temp;
        moon_cake[i].t = temp; //读取各个吨数
    }
    for (int i = 0; i < num; i++)
    {
        cin >> temp;
        moon_cake[i].price = temp;                       //读取各个价格
        moon_cake[i].unit_price = temp / moon_cake[i].t; //计算各个单价
    }
    vector<double> price_sort;
    for (int i = 0; i < num; i++)
    {
        for (int j = 0; j < moon_cake[i].t; j++)
        {
            price_sort.push_back(moon_cake[i].unit_price);
        }
    }
    sort(price_sort.begin(), price_sort.end(), greater<double>()); //价格降序排列
    double sum_price = 0;
    for (int i = 0; i < t; i++)
    {
        sum_price += price_sort[i];
    }
    cout << fixed << setprecision(2) << sum_price;
    return 0;
}

  1. 读取数据后,算出每种类的每吨单价
  2. 将所有单价排序,取前n个(既所需吨数)加和

数据均定义成double类型,否则会损失精度造成最终答案错误

标签:sort,PAT,1020,int,price,moon,num,cake
来源: https://blog.csdn.net/weixin_37684239/article/details/118633975