• S: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

    Approach #1: 

    #include<iostream>
    #include<iterator>
    #include<list>
    #include<vector>
    using namespace std;
    list<int>& FindList(vector<list<int>>& l, int id) {
        int tmp = l.size();
        if (tmp > 0) {
            vector<list<int>>::iterator i;
            i = l.begin();
            return *(i+id-1);
        }
    };
    
    int main() {
        int n;
        cin >> n;
        vector<list<int>> a;
        for (int i = 0; i < n; ++i) {
            string s;
            cin >> s;
            if (s == "new") {
                int id;
                cin >> id;
                a.push_back(list<int>());
            } else if (s == "add") {
                int id, num;
                cin >> id >> num;
                list<int>& temp = FindList(a, id);
                temp.push_back(num);
                temp.sort();
            } else if (s == "merge") {
                int id1, id2;
                cin >> id1 >> id2;
                list<int>& temp1 = FindList(a, id1);
                list<int>& temp2 = FindList(a, id2);
                temp1.merge(temp2);
            } else if (s == "unique") {
                int id;
                cin >> id;
                list<int>& temp = FindList(a, id);
                temp.unique();
            } else if (s == "out") {
                int id;
                cin >> id;
                list<int>& temp = FindList(a, id);
                temp.sort();
                if (temp.size() > 0) {
                    list<int>::iterator it;
                    for (it = temp.begin(); it != temp.end(); ++it) {
                        cout << *it << " ";
                    }
                }
                cout << endl;
            }
        }
        return 0;
    }
    

      

    Analysis:

    自己刚开始想的使用map来做这道题,样例通过了,但是提交的时候还是WA。参考了一下别人的代码交了上去。

    永远渴望,大智若愚(stay hungry, stay foolish)
  • 相关阅读:
    javaweb(十四)——JSP原理
    JavaWeb(十三)——使用Session防止表单重复提交
    javaweb(十一)——使用Cookie进行会话管理
    javaweb(十)——HttpServletRequest对象(一)
    javaweb(八)——HttpServletResponse对象(二)
    javaweb(七)——HttpServletResponse对象(一)
    《锋利的jQruery》读书笔记
    rem单位在手机网站中的使用
    JavaScript权威指南读书笔记
    dreamwaver cs6 主题配色方案
  • 原文地址:https://www.cnblogs.com/h-hkai/p/10336380.html
Copyright © 2020-2023  润新知