• 营养膳食-模拟


    传送门

    (过水已隐藏的蒟蒻?

    当成动态规划做

    想转移方程想好久

    一通瞎搞

    搞到崩溃

    突然(咳咳想到要排个序

    就糊弄出来了?

    (我该开心嘛?

    --------------------------------------------------------------------------------------------

    题目描述
    阿月正在女朋友宁宁的监督下完成自己的增肥计划。
    为了增肥,阿月希望吃到更多的脂肪。然而也不能只吃高脂肪食品,那样的话就会导致缺少其他营养。阿月通过研究发现:真正的营养膳食规定某类食品不宜一次性吃超过若干份。比如就一顿饭来说,肉类不宜吃超过 1 份,鱼类不宜吃超过 1 份,蛋类不宜吃超过 1 份,蔬菜类不宜吃超过 2 份。阿月想要在营养膳食的情况下吃到更多的脂肪,当然阿月的食量也是有限的。


    输入
    输入第一行包含三个正整数 n(n≤200),m(m≤100)和 k(k≤100)。表示阿月每顿饭最多可以吃 m 份食品,同时有 n 种食品供阿月选择,而这 n 种食品分为 k 类。

    第二行包含 k 个不超过 10 的正整数,表示可以吃 1 到 k 类食品的最大份数。

    接下来 n 行每行包括 2 个正整数,分别表示该食品的脂肪指数 ai 和所属的类别 bi,其中 ai≤100,bi≤k。


    输出
    输出一个数字即阿月可以吃到的最大脂肪指数和。
    样例输入

    6 6 3

    3 3 2

    15 1

    15 2

    10 2

    15 2

    10 2

    5 3

    样例输出

    60

    --------------------------------------------------------------------------------------------

    贪心:

    吃这m份食品的时候

    尽量先吃脂肪最高的

    只要这类食物没吃过上限就好

    所以简简单单的给这些食品按脂肪量快排一下就好

    (蒟蒻的我还是不想用重载运算符

    傻fufu的写着cmp

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    
    int n,m,k,mm;
    int v[105],v1[105];//一次可以吃1到k类食品的最大份数
    struct diet
    {
        int a,b;
    } q[205];
    int f[105];
    
    bool cmp(diet x,diet y)
    {
        return x.a > y.a;
    }
    
    int main()
    {
    //    freopen("diet.in","r",stdin);
    //    freopen("diet.out","w",stdout);
        scanf("%d%d%d",&n,&m,&k);
        for(int i = 1; i <= k; i++)
        {
            scanf("%d",&v[i]);
        }
        for(int i = 1; i <= n; i++)
        {
            scanf("%d%d",&q[i].a,&q[i].b);
        }
        
        sort(q+1,q+1+n,cmp);
    
        for(int i = 1; i <= n; i++)
        {
            if(mm + 1 <= m && v1[q[i].b] + 1 <= v[q[i].b])
            {
                if(f[i - 1] + q[i].a > f[i])
                    f[i] = f[i - 1] + q[i].a,v1[q[i].b]++,mm++;
            }
            else
                f[i] = f[i - 1];
        }
        printf("%d",f[n]);
        return 0;
    }
  • 相关阅读:
    数据结构与算法(3-4)--矩阵的压缩存储
    数据结构与算法(3-3)--队列的应用
    数据结构与算法(3-2)--栈的应用
    数据结构与算法(3-1)--栈和队列
    数据结构与算法(2)--线性表(数组和链表)
    数据结构与算法(1)--时间及空间复杂度
    python变量与地址的关系
    python高级(03)--socket编程
    python高级(02)--生成器和迭代器
    python处理http接口请求
  • 原文地址:https://www.cnblogs.com/darlingroot/p/10890422.html
Copyright © 2020-2023  润新知