• 洛谷 P2095 【营养膳食】


    P2095 【营养膳食】

    这道题是用贪心的思路的,因为每份食物的重量都是1,所以不存在动归的问题。

    那要怎么贪呢,就是先吃脂肪最多的那份食物

    下面上代码

    #include <bits/stdc++.h>
    
    using namespace std;
    int n, m, k;
    int eatub[105];//eat upper bound 第i种食物最多能吃的数量
    struct food_type {
        int fat;//脂肪
        int type;//所属的种类
    } food[205];
    
    bool judge(food_type &a, food_type &b) {
        return a.fat > b.fat;//按脂肪降序排列
    }
    
    int main() {
    
        //读入
        int n, m, k;
        int ans = 0;
        cin >> n >> m >> k;
        for (int i = 0; i < k; ++i)
            cin >> eatub[i];
        for (int i = 0; i < n; ++i)
            cin >> food[i].fat >> food[i].type;
        //贪心的思路,先吃脂肪多的
        //排序
        sort(food, food + n, judge);
        //贪心
        for (int i = 0; i < n; ++i) {//最好情况就是把所有食物吃光
            if (m > 0 && eatub[food[i].type - 1] > 0) {//如果还没饱并且这种食物还能吃
                //把它吃掉
                eatub[food[i].type - 1]--;
                m--;
                ans += food[i].fat;
            }
        }
        cout << ans;
        return 0;
    }
  • 相关阅读:
    jQuery 笔记
    centos 项目上线shell脚本
    linux关于用户密码家目录总结
    python 写了一个批量拉取文件进excel文档
    css 选择器/table属性/type 属性
    表单
    html table
    html超文本标记语言
    mysql数据库1
    mysql数据库
  • 原文地址:https://www.cnblogs.com/Iuppiter/p/12207795.html
Copyright © 2020-2023  润新知