zoukankan      html  css  js  c++  java
  • Problem P: 开个餐馆算算账

    Problem P: 开个餐馆算算账

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 1761  Solved: 931
    [Submit][Status][Web Board]

    Description

    小明创业了!他开了一家餐馆,每天客人还挺多的。每天下班后,他都要算算今天总共收入多少钱,但是手工算太麻烦了,所以他来向你求助了。

    Input

    1N>0,表示餐馆提供N个菜品。

    之后N行,每行包括2部分:菜名(不含空白符)及每份菜品的价格。

    接着是M>0,表示今天接待的客人数。

    每个客人的输入份三部分,第1行是客人的姓名(不含空白符),第2行是客人点的菜品的种类数K,之后K行是客人点的菜品名及份数。

    Output

    第一行输出Guest        Price

    之后按照客人姓名从小到大的顺序(没有重名的顾客),依次输出每个客人消费了多少钱,消费额保留2位小数。

    输出时,姓名左对齐,宽度为所有客人姓名的最大长度加1

    Sample Input

    10

    Yu-Shiang-Shredded-Pork 20

    sweet-sour-Shredded-potato 15

    Pie 0.50

    Steamed-Rice 1.50

    Tomato-and-Egg-Soup 17

    Spareribs-with-brown-sauce 55

    Sauteed-Sliced-Lamb-with-Scallion 60

    Stir-fried-bean-sprouts 14

    Moo-Shu-Pork 18

    Deep-Fried-Dough-Sticks 2.50

    3

    Zhangsan

    4

    Yu-Shiang-Shredded-Pork 1

    sweet-sour-Shredded-potato 1

    Pie 3

    Steamed-Rice 1

    LiSi

    2

    Moo-Shu-Pork 1

    Deep-Fried-Dough-Sticks 4

    WangWu

    3

    Tomato-and-Egg-Soup 1

    Spareribs-with-brown-sauce 1

    Sauteed-Sliced-Lamb-with-Scallion 1

    Sample Output

    Guest Price

    LiSi 28.00

    WangWu 132.00

    Zhangsan 38.00

    HINT

    #include <iostream>
    #include <iomanip>
    #include <map>
    //#include <string>
    using namespace std;
    int main()
    {
        int len=0; //名字长度
        int N;cin>>N;
        map<string, double> post;//用于存菜单
        for(int i=0; i<N; i++)//输入相关菜品信息
        {
            string name; double price;
            cin>>name>>price;
            post[name]=price;//两种存储方法
            //post.insert(make_pair(name, price));
        }
        int M;cin>>M;
        map<string, double> person;// 用于存人名和消费
        for(int i=0; i<M; i++)
        {
            string name; int K;
            cin>>name>>K;//输入人名和消费信息
    
            if(name.size()>len)//求出最大名字长度
            len=name.size();
    
            double sum=0;
            for(int j=0; j<K; j++)
            {
                string name_; int n;
                cin>>name_>>n;
                sum+=post[name_]*n;
            }
            person[name]=sum;//两种存储方法
            //person.insert(make_pair(name, sum));
        }
    
        cout<<"Guest        Price"<<endl;
        map<string, double>::iterator p;
        for(p=person.begin(); p!=person.end(); p++)
        cout<<setiosflags(ios::left)<<setw(10)<<p->first<<setprecision(2)<<fixed<<" "<<p->second<<endl;
    
    }
    

      

    作者:7oDo

    仅供参考,请勿抄袭。

    Hang Hang Hang !!!

  • 相关阅读:
    Luogu P1247 取火柴游戏
    Luogu P2148 [SDOI2009]E&D
    Luogu P3305 [SDOI2013]费用流 二分 网络流
    NTT学习笔记
    Luogu P4015 运输问题
    Lucas定理学习笔记(没有ex_lucas)
    Luogu P2613 【模板】有理数取余
    欧拉定理与扩展欧拉定理学习笔记
    BSGS与exBSGS学习笔记
    Luogu P3868 [TJOI2009]猜数字
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9157557.html
Copyright © 2011-2022 走看看