P1208 混合牛奶题解

题目传送门

总结:
1、结构体+排序
2、贪心
3、逐个加入,够数退出
4、小心没良心的数据,比如 0 0

#include <bits/stdc++.h>

using namespace std;
typedef long long LL;
int n, m;
const int N = 5010;
LL cost;

struct cow {
    int price, cnt; //price:表示第i个农民牛奶的单价,cnt:农民i一天最多能卖出的牛奶量
} cows[N];

bool cmp(const cow &a, const cow &b) {
    return a.price < b.price;
}

int main() {
    cin >> n >> m; //需要牛奶的总量,和提供牛奶的农民个数。
    for (int i = 1; i <= m; i++) cin >> cows[i].price >> cows[i].cnt;
    sort(cows + 1, cows + m + 1, cmp);

    for (int i = 1; i <= m; i++) {
        for (int j = 1; j <= cows[i].cnt; j++)
            if (n) n--, cost += cows[i].price;
            else {
                cout << cost << endl;
                exit(0);
            }
    }
    //因为存在败家的测试数据: 0 0 ,不得不防啊
    cout << cost << endl;
    return 0;
}
上一篇:299. Bulls and Cows [Medium]


下一篇:P3052 [USACO12MAR]Cows in a Skyscraper G