zoukankan      html  css  js  c++  java
  • (noi.openjudge.cn) 3.9数据结构之C++STL T1——T2

    T1 1806:词典

    描述

    你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。

    输入首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。输入中出现单词只包括小写字母,而且长度不会超过10。输出在输出中,你需要把输入文档翻译成英文,每行输出一个英文单词。如果某个外语单词不在词典中,就把这个单词翻译成“eh”。

    样例输入

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

    样例输出

    cat
    eh
    loops
    读入时注意,不要单个字符读入,难以设置读入结束条件,以行为单位读入,行首为空字符为读入结束条件
    可以采用sscanf将一行两个单词分离
    sscanf(c,"%s%s",a,b); 将字符串c以空格分为两个字符串a,b
    #include<iostream>
    #include<map>
    #include<cstdio>
    using namespace std;
    map<string,string>mp;
    char a[11],b[11],c[22];
    int main()
    {
        while(gets(c)&&c[0])
        {
            sscanf(c,"%s%s",a,b);
            mp[b]=a;
        }
        while(gets(c)&&c[0])
        {
            if(mp.find(c)!=mp.end()) cout<<mp[c]<<endl;
            else cout<<"eh"<<endl;
        }
    } 
    View Code

    T2 3339:List

    描述

    写一个程序完成以下命令:
    new id ——新建一个指定编号为id的序列(id<10000)
    add id num——向编号为id的序列加入整数num
    merge id1 id2——合并序列id1和id2中的数,并将id2清空
    unique id——去掉序列id中重复的元素
    out id ——从小到大输出编号为id的序列中的元素,以空格隔开

    输入
    第一行一个数n,表示有多少个命令( n<=200000)。以后n行每行一个命令。
    输出
    按题目要求输出。
    样例输入
    16
    new 1
    new 2
    add 1 1
    add 1 2
    add 1 3
    add 2 1
    add 2 2
    add 2 3
    add 2 4
    out 1
    out 2
    merge 1 2
    out 1
    out 2
    unique 1
    out 1
    样例输出
    1 2 3 
    1 2 3 4
    1 1 2 2 3 3 4
    
    1 2 3 4
    可以用来练list
    #include<iostream>
    #include<list>
    #include<cstring>
    #include<iterator>
    using namespace std;
    int n,id1,id2;
    string s;
    list<int>lit[10001];
    int main()
    {
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>s;
            if(s=="new") cin>>id1;
            else if(s=="add")
            {
                cin>>id1>>id2;
                lit[id1].push_back(id2);//list[id1]后面插入元素id2
            }
            else if(s=="merge")
            {
                cin>>id1>>id2;
                lit[id1].merge(lit[id2]);//讲list[id2]接到list[id1]后面,同时清空list[id2]
            }
            else if(s=="unique")
            {
                cin>>id1;
                lit[id1].sort();//排序
                lit[id1].unique();//去重,unique只能去重相邻元素,所以用前先排序
            }
            else//输出
            {
                cin>>id1;
                if(!lit[id1].empty())//首先判断非空
                {
                    lit[id1].sort();//排序
                    ostream_iterator<int> output(cout," ");
                    copy(lit[id1].begin(),lit[id1].end(),output);//输出,并以空格分隔
                    cout<<endl;
                }
                else cout<<endl;
            }
        }
    }
    View Code


  • 相关阅读:
    POJ 1724 ROADS【最短路/搜索/DP】
    UVA 12716 GCD XOR【异或】
    UVA 10375 Choose and divide【唯一分解定理】
    UVA 12169 Disgruntled Judge【扩展欧几里德】
    UVA 11582 Colossal Fibonacci Numbers!【数学】
    011.progit笔记---git变基rebase
    010.progit笔记---git多个远程分支
    009.progit笔记---git单个远程分支
    008.progit笔记---git分支
    007.progit笔记---git别名
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/6234995.html
Copyright © 2011-2022 走看看