文章

34

粉丝

0

获赞

6

访问

1.1k

头像
组队刷题 题解:
P1307
发布于2025年8月7日 15:47
阅读数 12

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

struct Node {
    int cnt;
    int cost;
} node[1005];

int main() {
    int m, n;
    while (cin >> m >> n) {
        if (m == -1 && n == -1) break;

        for (int i = 0; i < n; i++) {
            cin >> node[i].cnt >> node[i].cost;
        }

        sort(node, node + n, [](Node a, Node b) {
            return 1.0 * a.cost / a.cnt < 1.0 * b.cost / b.cnt;
        });

        double ans = 0;
        for (int i = 0; i < n; i++) {
            if (m < node[i].cost) {
                ans += m * (1.0 * node[i].cnt / node[i].cost);
                break;
            } else {
                m -= node[i].cost;
                ans += node[i].cnt;
            }
        }

        printf("%.3lf\n", ans);
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发