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类型,否则会损失精度造成最终答案错误

上一篇:PAT 乙级 1006 换个格式输出整数 (15 分)


下一篇:Mac sublime text4 修改选中行背景色