• Problem D: STL——字典


    Problem D: STL——字典

    Time Limit: 2 Sec  Memory Limit: 128 MB
    Submit: 7647  Solved: 1560
    [Submit][Status][Web Board]

    Description

    输入n个字符串对(str1,str2),再输入k个查询字符串str,从字符串对中查找查询字符串,即如果str=str2,则输出str1,如果查询不到则输出"eh"(不包含引号)。输入保证所有字符串对的str2不相同,字符串只含有字母和数字,长度小于20!

    Input

    输入包含多组数据,直到文件结尾。

    每组数据第一行包含一个整数n(0≤n≤10^5)。接下来n行,每行描述一个字符串对。

    接下来包含一个整数m(0≤m≤10^5)。接下来m行,每行描述一个查询字符串。

    见样例

    Output

    输出每个查询的结果。

    Sample Input

    5
    dog ogday
    cat atcay
    pig igpay
    froot ootfray
    loops oopslay
    3
    atcay
    ittenkay
    oopslay
    

      

    Sample Output

    cat
    eh
    loops
    

      

    HINT

    用STL的map容易实现


    很多人会说cin的速度比scanf慢很多, 其实不然. 
    cin慢的原因主要在于默认cinstdin总是保持同步, 这一步是消耗时间大户. 
    只需要加上std::ios::sync_with_stdio(false)来关闭同步就好了, 速度甚至要优于scanf.

    Append Code

    法1:
    #include <iostream>
    #include <map>
    using namespace std;
    int main()
    {
        ios::sync_with_stdio(false)//关闭同步流,提高输入速度
        int n, m;
        while(cin>>n)
        {
            map<string ,string> animal;
            for(int i=0; i<n; i++)
            {
                string x, y;
                cin>>x>>y;
                animal.insert(make_pair(x,y));
            }
            cin>>m;
            for(int i=0; i<m ;i++)
            {
                string temp;
                cin>>temp;
                map<string ,string> ::iterator p;
                int t=0;
                for(p=animal.begin(); p!=animal.end(); p++)
                {
                    if(p->second==temp)
                    {
                        cout<<p->first<<endl;
                        t++;
                    }
                }
                if(t==0)
                    cout<<"eh"<<endl;
            }
        }
    }
    法2:
    #include <iostream>
    #include <map>
    using namespace std;
    int main()
    {
        ios::sync_with_stdio(false);//关闭cin同步流提高速度
        int n;
        while(cin>>n)
        {
          string arr, brr, crr;
          map<string , string> s;
          while(n--)
          {
            cin>>arr>>brr;
            s[brr]=arr;
          }
          
           cin>>n;
           while(n--)
          {
            cin>>crr;
            if(s.count(crr)!=0)
                cout<<s[crr]<<endl;
            else
                cout<<"eh"<<endl;
     
          }
        }
     
     
    }
    

      

    作者:7oDo

    仅供参考,请勿抄袭。

    Hang Hang Hang !!!

  • 相关阅读:
    Spark随机深林扩展—OOB错误评估和变量权重
    Spark随机森林实现学习
    RDD分区2GB限制
    Spark使用总结与分享
    Spark核心—RDD初探
    机器学习技法--学习笔记04--Soft SVM
    机器学习技法--学习笔记03--Kernel技巧
    机器学习基石--学习笔记02--Hard Dual SVM
    机器学习基石--学习笔记01--linear hard SVM
    特征工程(Feature Enginnering)学习记要
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9127938.html
Copyright © 2020-2023  润新知