Problem P: 开个餐馆算算账

Posted 一本故事i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

}

  

以上是关于Problem P: 开个餐馆算算账的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 片段中使用谷歌地图

Problem Y: 哪一天,哪一秒?

[UVA]Pixhawk之姿态解算篇_源码姿态解算算法分析

Problem B: 七龙珠II

SDOI2015序列统计

关于代码片段的时间复杂度