当前位置: 首页 > news >正文

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。参考了一下别人的代码交了上去。

 

转载于:https://www.cnblogs.com/ruruozhenhao/p/10336380.html

相关文章:

  • CLOUD常用表
  • 【题解】Luogu P2766 最长不下降子序列问题
  • FBO中多重采样抗锯齿(MSAA MultiSampling Anti-Aliasing)
  • java序列化
  • 记利用frp配合nginx实现内网透传
  • 一本通1554【例 3】异象石
  • codeforces 140E.New Year Garland
  • 加密_散乱的密文
  • 力扣——二叉搜索树中的搜索
  • visualsvn for vs2017 初始化错误
  • 寒假开学回忆
  • 4算法与数据结构
  • C++虚继承
  • L3-009 长城 (30 分)
  • 股票
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 〔开发系列〕一次关于小程序开发的深度总结
  • CSS居中完全指南——构建CSS居中决策树
  • gcc介绍及安装
  • Java教程_软件开发基础
  • php的插入排序,通过双层for循环
  • Python中eval与exec的使用及区别
  • React16时代,该用什么姿势写 React ?
  • SwizzleMethod 黑魔法
  • 闭包--闭包作用之保存(一)
  • 复杂数据处理
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 深度解析利用ES6进行Promise封装总结
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用docker-compose进行多节点部署
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 我的业余项目总结
  • 一份游戏开发学习路线
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • ​比特币大跌的 2 个原因
  • #NOIP 2014# day.1 T2 联合权值
  • #传输# #传输数据判断#
  • (8)STL算法之替换
  • (C语言)二分查找 超详细
  • (Matlab)使用竞争神经网络实现数据聚类
  • (原創) 未来三学期想要修的课 (日記)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • .java 9 找不到符号_java找不到符号
  • .NET 使用 XPath 来读写 XML 文件
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET框架设计—常被忽视的C#设计技巧
  • .Net语言中的StringBuilder:入门到精通
  • .NET中统一的存储过程调用方法(收藏)
  • @cacheable 是否缓存成功_Spring Cache缓存注解
  • @RunWith注解作用
  • [20170705]diff比较执行结果的内容.txt