3339:List

总时间限制: 4000ms 内存限制: 65536kB

描述

写一个程序完成以下命令:
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
深刻了解STL的无敌。。自己手打的不是TLE就是RE
满分代码
#include<bits/stdc++.h>
using namespace std; int n,m,k,l,s,t,r;
list<int>a[];
string p; int main()
{
//freopen("1.txt","r",stdin);
int i,j;
ios::sync_with_stdio(false);
cin>>n;
for(j=;j<=n;j++)
{
cin>>p;
if(p=="new") cin>>l;
else
if(p=="add")
{
cin>>l>>r;
a[l].push_back(r);
}
else if(p=="out")
{
cin>>l;
if(a[l].empty())
cout<<endl;
else
{
a[l].sort();
for(list<int> :: iterator i=a[l].begin();i!=a[l].end();i++)
cout<<*i<<" ";
cout<<endl;
}
}
else if(p=="merge")
{
cin>>l>>r;
a[l].merge(a[r]);
}
else
if(p=="unique")
{
cin>>l;
a[l].sort();
a[l].unique();
}
}
return ;
}

点击展开

手写代码 (0分仅供参考)

#include <vector>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm> using namespace std; struct node{
int a[];
int w;
}e[];
string a;
vector<int>q;
bool s[],d[];
int f,b[],n,i,id,j,r,z,y;
int main()
{
cin>>n;
while(n--)
{
cin>>a;
if(a=="new") {
cin>>r;
d[r]=;
}
if(a=="add") {
cin>>z>>y;
e[z].a[e[z].w++]=y;
}
if(a=="out") {
cin>>r;
if(d[r]==)
{
for(i=;i<e[r].w;++i)
if(e[r].a[i]!=) b[i]=e[r].a[i];
sort(b,b+e[r].w);
for(i=;i<e[r].w;++i)
cout<<b[i]<<" ";
}
cout<<endl;
}
if(a=="merge")
{
cin>>z>>y;
for(i=;i<e[y].w;++i)
e[z].a[e[z].w++]=e[y].a[i];
d[y]=;
}
if(a=="unique")
{
memset(s,,sizeof(s));
cin>>r;
for(i=;i<e[r].w;++i)
if(s[e[r].a[i]]==)
{
q.push_back(e[r].a[i]);
s[e[r].a[i]]=;
}
e[r].w=;
while(!q.empty())
{
e[r].a[e[r].w++]=q.back() ;
q.pop_back();
}
}
}
}

点击展开

          普及点知识。 

          C++ list的基本操作和使用

Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢.

  assign() 给list赋值
  back() 返回最后一个元素
  begin() 返回指向第一个元素的迭代器
  clear() 删除所有元素
  empty() 如果list是空的则返回true
  end() 返回末尾的迭代器
  erase() 删除一个元素
  front() 返回第一个元素
  get_allocator() 返回list的配置器
  insert() 插入一个元素到list中
  max_size() 返回list能容纳的最大元素数量
  merge() 合并两个list
  pop_back() 删除最后一个元素
  pop_front() 删除第一个元素
  push_back() 在list的末尾添加一个元素
  push_front() 在list的头部添加一个元素
  rbegin() 返回指向第一个元素的逆向迭代器
  remove() 从list删除元素
  remove_if() 按指定条件删除元素
  rend() 指向list末尾的逆向迭代器
  resize() 改变list的大小
  reverse() 把list的元素倒转
  size() 返回list中的元素个数
  sort() 给list排序
  splice() 合并两个list
  swap() 交换两个list
  unique() 删除list中重复的元素

  这题就是一个模板题 可以一做。查看

Openjudge 3.9-3339的更多相关文章

  1. 【OpenJudge 8463】Stupid cat & Doge

    http://noi.openjudge.cn/ch0204/8463/ 挺恶心的一道简单分治. 一开始准备非递归. 大if判断,后来发现代码量过长,决定大打表判断后继情况,后来发现序号不对称. 最后 ...

  2. 【OpenJudge 191】【POJ 1189】钉子和小球

    http://noi.openjudge.cn/ch0405/191/ http://poj.org/problem?id=1189 一开始忘了\(2^{50}\)没超long long差点写高精度Q ...

  3. 【OpenJudge 1665】完美覆盖

    http://noi.openjudge.cn/ch0405/1665/?lang=zh_CN 状压水题,手动转移 #include<cstdio> #include<cstring ...

  4. 【OpenJudge 1793】矩形覆盖

    http://noi.openjudge.cn/ch0405/1793/ 好虐的一道题啊. 看数据范围,一眼状压,然后调了好长时间QwQ 很容易想到覆盖的点数作为状态,我用状态i表示至少覆盖状态i表示 ...

  5. OpenJudge 2990:符号三角形 解析报告

    2990:符号三角形 总时间限制:  1000ms       内存限制:  65536kB 描述 符号三角形的第1行有n个由“+”和”-“组成的符号 ,以后每行符号比上行少1个,2个同号下面是”+“ ...

  6. BZOJ 3339 & 莫队+"所谓的暴力"

    题意: 给一段数字序列,求一段区间内未出现的最小自然数. SOL: 框架显然用莫队.因为它兹瓷离线. 然而在统计上我打了线段树...用&维护的结点...400w的线段树...然后二分查找... ...

  7. OpenJudge 7624 山区建小学

    在openjudge似乎无法凭题号搜到题...? 总时间限制:  1000ms  内存限制:  65536kB 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任 ...

  8. [OpenJudge 3066]随机序列

    [OpenJudge 3066]随机序列 试题描述 Bob喜欢按照如下规则生成随机数: 第一步:令a[0] = S, 当n = 0: 第二步:a[n+1] = (a[n]*A+B)%P: 第三步:如果 ...

  9. [OpenJudge 3064]坠落的蚂蚁

    [OpenJudge 3064]坠落的蚂蚁 试题描述 一根长度为1米的木棒上有若干只蚂蚁在爬动.它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右.如果两只蚂蚁碰头,则它们立即交换速度并继续 ...

随机推荐

  1. cocoapods pod setup

    在终端  输入 pod setup  之后 你会发现 一直没有反应    会出现这种情况   如下图   你要耐心等一下. 直到看到Setup completed    就算是成功了.(你的网络要好) ...

  2. MJRefresh下拉刷新框架

    github下载地址:https://github.com/CoderMJLee/MJRefresh MJRefresh类结构图 self.userTableView.mj_footer = [MJR ...

  3. UITextField限制中英文字数和光标定位以及第三方输入限制问题

    先自定义一个UITextField的子类HLNavTextField,在控制器里调用子类的- (void)limitHansLength:(int)hans otherLength:(int)othe ...

  4. C++语言-06-文件操作

    C语言文件操作 C++语言是C语言的超集,是在C语言的基础上增加了面向对象的特性而创造出来的,最初被命名为带类的C.所以C++语言中包含了C语言的思想,如:C++语言中文件操作的原理与步骤与C语言基本 ...

  5. 基于Metaweblog API 接口一键发布到国内外主流博客平台

    之前的生活 之前一直使用evenote写博客和日志,其实还是挺方便的.但是我一直都希望能够同步到国内的博客和国外的blogspot等主流博客平台.而强大everote只提供了facebook.twit ...

  6. Unity3D 面试题汇总

    最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearD ...

  7. Java 往年试卷参考答案!!!

    仅供参考: 第一题: E C E A D D C A C A C A B A B C C D B C 第二题: True True False 11 12 13 14 No such file fou ...

  8. 6、后记:PMO项目管理 - PMO项目管理办公室

    PMO项目管理办公室的作用,按笔者所简化的理解,其作用就是将项目资源标准化.规范化.文档化.然后,根据实际的项目情况,对项目间的资源内容进行协调沟通和培训,让项目组能够更快更好的完成项目建设任务. 不 ...

  9. Java编译器如何生成重载和覆盖方法代码

    下面是一个很简单的例子,关于Java中的多态:方法重载和方法覆盖: 多态指的是方法在不同的时刻表现出不同的形式:在编译期间,这被叫做方法重载:方法重载允许相关的方法被同一个方法名字调用,这有时候被叫做 ...

  10. Java成员的访问权限控制

    Java中的访问权限控制包含两个部分: 类的访问权限控制 类成员的访问权限控制 对类来说,访问权限控制修饰符可以是public或者无修饰符(默认的包访问权限): 对于类成员来说,访问权限控制修饰符可以 ...