1 条题解

  • 0
    @ 2023-3-3 14:24:54
    //USACO131. Mixing Milk
    /*
    	解题思路:贪心
    	使用结构体来存储牛奶的信息,将牛奶按照单价从低到高来排序,依次取牛奶			
    
    */
    #include <bits/stdc++.h>
    using namespace std;
    const int MAXN = 5005;  // 最大奶农数量
    struct farmer {
    	int p, num; // 分别记录单价和产量
    }a[MAXN];
    bool cmp(farmer a,farmer b){
    	if(a.p < b.p)
    		return 1;
    	else
    		return 0;
    }
    int main()
    {
        int n,m;           // N 表示总需求量,M 表示奶农数量
        cin >> n >> m;
        for (int i = 0; i < m; i++)    // 读入单价和产量
        {
            cin >> a[i].p >> a[i].num;
        }
    
        sort(a, a + m,cmp);     // 对单价进行排序,升序排列
        
        int i = 0;          // 指向当前的奶农
        int cost = 0;       // 总费用,初始值为 0
    
        while (n > 0)       // 当需求量大于 0 时
        {
            int buy = min(n, a[i].num);     // 实际采购数量为需求量和奶农产量的较小值
            cost += buy * a[i].p;         // 计算费用,并加到总费用中
            n -= buy;                   // 更新需求量
            i++;                        // 移动到下一个奶农
        }
    
        cout << cost << endl;   // 输出总费用
        return 0;
    }
    
    • 1

    信息

    ID
    1130
    时间
    1000ms
    内存
    125MiB
    难度
    10
    标签
    (无)
    递交数
    5
    已通过
    2
    上传者