USACO 1.1 Greedy Gift Givers

/*
ID: aznfy1
PROG: gift1
LANG: C++
*/

#include <string.h>
#include <algorithm>
#include <string>
#include <iostream>
#include <map>
#include <stdio.h>
#define clr(a,b); memset(a,b,sizeof(a));

using namespace std;

string name;
char s[100][20];
string tmp;
int have,givenum;
map<string,int>ma;

int main()
{
    freopen("gift1.in","r",stdin);
    freopen("gift1.out","w",stdout);
    int n;
    while(cin>>n)
    {
        ma.clear();
        for(int i=1;i<=n;i++)
        {
            cin>>name;
            for(int j=0;j<name.length();j++)
            s[i][j]=name.c_str()[j];
            ma[name]=0;
        }
        for(int i=1;i<=n;i++)
        {
            cin>>name>>have>>givenum;
            ma[name]+=have;
            for(int j=1;j<=givenum;j++)
            {
                cin>>tmp;
                ma[tmp]+=have/givenum;
                ma[name]-=have/givenum;
            }
            ma[name]-=have;
        }
        for(int i=1;i<=n;i++)
        {
            cout<<s[i]<<" "<<ma[s[i]]<<endl;
        }
        //注释中的是字典序输出,与要求不符。
        /*map<string,int>::const_iterator map_it=ma.begin();
        while(map_it!=ma.end())
        {
            cout<<map_it->first<<" "<<map_it->second<<endl;
            map_it++;
        }*/
    }
    return 0;
}
View Code

 第二题代码,顺便学了一下STL的map和string 比较浅显的用法。

原文地址:https://www.cnblogs.com/whatthefy/p/3080712.html