zoukankan      html  css  js  c++  java
  • UVa 11308

      题目大意:给出一些原料和价钱和若干份菜谱,每份菜谱都标明所需的原料和数量,找出所有不超过预算的菜谱。

      没什么好说的,主要是对map的运用。

     1 #include <cstdio>
     2 #include <string>
     3 #include <map>
     4 #include <iostream>
     5 #include <cctype>
     6 #include <algorithm>
     7 using namespace std;
     8 typedef map<string, int> msi;
     9 
    10 struct Recipe
    11 {
    12     string name;
    13     int cost;
    14     bool operator < (const Recipe& r) const
    15     {
    16         if (cost != r.cost)  return cost < r.cost;
    17         return name < r.name;
    18     }
    19 }recipe[110];
    20 
    21 int main()
    22 {
    23 #ifdef LOCAL
    24     freopen("in", "r", stdin);
    25 #endif
    26     int T;
    27     cin >> T;
    28     getchar();
    29     msi ingredient;
    30     while (T--)
    31     {
    32         string title;
    33         getline(cin, title);
    34         transform(title.begin(), title.end(), title.begin(), ::toupper);
    35         int m, n, b;
    36         cin >> m >> n >> b;
    37         getchar();
    38         ingredient.clear();
    39         string str;
    40         int x; 
    41         for (int i = 0; i < m; i++)
    42         {
    43             cin >> str >> x;
    44             getchar();
    45             ingredient[str] = x;
    46         }
    47         for (int i = 0; i < n; i++)
    48         {
    49             getline(cin, recipe[i].name);
    50             recipe[i].cost = 0;
    51             int k;
    52             cin >> k;
    53             getchar();
    54             for (int j = 0; j < k; j++)
    55             {
    56                 cin >> str >> x;
    57                 getchar();
    58                 recipe[i].cost += ingredient[str]*x;
    59             }
    60         }
    61         sort(recipe, recipe+n);
    62         cout << title << endl;
    63         if (recipe[0].cost > b)
    64         {
    65             cout << "Too expensive!" << endl << endl;
    66             continue;
    67         }
    68         for (int i = 0; i < n; i++)
    69         {
    70             if (recipe[i].cost > b)  break;
    71             cout << recipe[i].name << endl;
    72         }
    73         cout << endl;
    74     }
    75     return 0;
    76 }
    View Code
  • 相关阅读:
    Electron应用打包、自动升级
    使用javascript处理nginx的请求
    使用Electron开发桌面应用
    VSCode、VBox搭建C/C++开发环境
    树莓派搭建Nexus2私服
    Tom猫小游戏功能实现
    如何配置webpack让浏览器自动补全前缀
    git 常用操作
    数组的一些常用操作
    ES6 的模块化
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3293545.html
Copyright © 2011-2022 走看看