• 斯沃琪(SWQ)的吃货计划


    斯沃琪(SWQ)的吃货计划
    难度级别:A; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B
    试题描述

      SWQ正在完成自己的“尝遍世界的美食”(虽然她破产了,但还是可以从地上捡东西吃呀……真不卫生……)计划。
      为了尝遍世界的美食,SWQ希望吃到更多的食物(食材)。然而也不能只吃一种食品,那样的话就会导致缺少其他营养。SWQ通过自己专业当吃货11年的经验(几乎是一出生就开始吃……)发现:真正的营养膳食规定某类食品不宜一次性吃超过若干份。比如就一顿饭来说,肉类不宜吃超过1份,鱼类不宜吃超过1份,蛋类不宜吃超过1份,蔬菜类不宜吃超过2份。SWQ想要在营养膳食的情况下吃到更多的食物,当然SWQ的食量也是有限的。

    输入
    *第一行:有三个正整数n,m,k表示SWQ每顿饭最多吃m道菜,有n道菜SWQ可以选择,这些菜被分成了k类
    *第二行:有k个整数表示这k种类别的菜最多可以吃多少份。
    *接下来的n行每行有两个数,分别代表所含的食材数与所属的类别。

    输出
    *一个数,代表吃货SWQ最多可以吃到几种食材。
    输入示例
    6 6 3
    3 3 2
    15 1
    15 2
    10 2
    15 2
    10 2
    5 3
    输出示例
    60
    其他说明
    LJX认为:
    n<=200
    m<=100
    k<=100
    #include<iostream>
    using namespace std;
    int a[200][3],b[200],c[200],h[100];
    int i,j,sum=0,cnt=0,n,m,k,g;
    int main()
    {
        cin>>n>>m>>k;
        for(i=0;i<k;i++) cin>>h[i];
        for(i=0;i<n;i++) cin>>b[i]>>c[i];
        for(i=0;i<n;i++)
        {
            g=i;
            for(j=i+1;j<n;j++) if(b[g]<b[j]) g=j;
            if(g!=i)
            {
                swap(b[g],b[i]);
                swap(c[g],c[i]);
            } 
        }
        for(i=0;i<n;i++)
        {
            if(h[c[i]-1]>0&&m>0)
            {
                h[c[i]-1]--;
                m--;
                sum+=b[i];
            }
            if(m==0) break;
        }
        cout<<sum;
        //system("pause");
        return 0;
    }
  • 相关阅读:
    基本的Dos命令
    OneCloud记录
    Wireguard笔记
    windows网络流量监控
    CoreDNS笔记
    Goland 使用[临时]
    js for循环的同步代码
    看我如何用微信上线CobaltStrike
    图数据库 Nebula Graph 在 Boss 直聘的应用
    熵池 在计算机科学与金融学中的应用
  • 原文地址:https://www.cnblogs.com/LZHE/p/5655807.html
Copyright © 2020-2023  润新知