题解:P1208 [USACO1.3] 混合牛奶 Mixing Milk

题目传送门

思路

很显然贪心,考虑从最小价格的奶农那里买奶,有多少买多少,买不起就结束。

具体实现看代码。

::::info[code]{open}

#include <bits/stdc++.h>
using namespace std;
int n, m, ans;
struct asdf{//存奶农结构体
    int p, a;
}a[100010];
int cmp(asdf a,asdf b){//重载排序
    return a.p < b.p;
}
int main()
{
    cin >> n >> m;
    for (int i = 1; i <= m;i++){
        cin >> a[i].p >> a[i].a;
    }
    sort(a+1,a+1+m,cmp);
    for (int i = 1; i <= m;i++){//贪心
        if(n>=a[i].a){//当前的钱够买所有的奶
            n-=a[i].a;
            ans+=a[i].a*a[i].p;//全买掉
        }else{//不够买所有的奶
            ans+=n*a[i].p;
            n = 0;//能买多少买多少并结束
            break;
        }
    }
    cout << ans;
    return 0;
}
posted @ 2026-05-24 13:36  Synthx  阅读(6)  评论(0)    收藏  举报