2019年-PTA模拟赛-L2-2 月饼(贪心算法,测试点2.3分析)

测试点分析:

测试点2(库存存在小数),题目没说库存是整数。
测试点3(库存总和无法满足市场需求)
测试点2输入:
3 20
18.1 15.2 10.3
75.5 72.2 45.2
输出:
93.26
测试点3输入:
3 70
18 15 10
75 72 45
输出:
192.00

AcCode:

#include<bits/stdc++.h>
using namespace std;
struct mooncake{
    double cnt;
    double price;
};
mooncake m[1010];
bool Cmp(const mooncake &a, const mooncake &b){
    return a.price > b.price;
}

int main(){
    int kds, need, sum = 0, asum = 0;
    cin >> kds >> need;
    for(int i = 0; i < kds; i++){
        double k;
        cin >> k;
        sum += k;
        m[i] = {k, 0};
    }
    for(int i = 0; i < kds; i++){
        double p;
        cin >> p;
        asum += p;
        m[i].price = 1.0 * p / m[i].cnt;
    }
    if(sum < need){
        printf("%.2f", (double)asum);
        return 0;
    }
    sort(m, m + kds, Cmp);
    double res = 0;
    int idx = 0;
    double ned = need;
    while(ned){
        if(m[idx].cnt <= ned){
            res += m[idx].price * m[idx].cnt;
            ned -= m[idx].cnt;
            idx++;
        }else{
            res += m[idx].price * ned;
            ned -= ned;
        }
    }
    printf("%.2f", res);
    return 0;
}

posted @ 2025-03-10 13:58  Yuhhhhh  阅读(10)  评论(0)    收藏  举报