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. 【代码笔记】iOS-给背景图赋值颜色

    代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // ...

  2. Swift中的部分更新与旧版的区别

    1. 函数中的外部变量名取消 “#”方式,仅能用直接命名方式 错误 func swift(#str :NSString){} 正确 func swift(str str :NSString){} 2. ...

  3. 转载文章----IL反编译利器——Ildasm.exe和Reflector.exe:

    转载地址:http://www.cnblogs.com/yangmingming/archive/2010/02/03/1662546.html 一:Ildasm.exe简介  这一微软VS自带工具, ...

  4. win10_x64更新错误解决: 安装一些更新时出现问题,但我们稍后会重试。如果持续出现这些问题,并且你想要搜索Web或联系支持人员以获取相关信息,以下信息可能会对你有帮助:

    可能的原因: 1.windows 服务没打开 win+r,打开[运行]对话框 输入 [service.msc] 找到 [Windows Firewall]和[Internet connection s ...

  5. gitlab+gerrit+jenkins持续集成框架

    1.持续集成之gitlab+gerrit+jenkins 1.1. GitLab 1.1.1. 简介 GitLab 是一个使用使用Ruby on Rails搭建的,用于仓库管理系统的开源项目.使用Gi ...

  6. CMPP3.0 长短信实现方案

    长短信息:是指超过70个汉字,140个字节的信息内容 一.CMPP协议相关字段分析 CMPP协议具体部分请参考<中国移动互联网短信网关接口协议(V3.0.0).doc> CMPP_SUBM ...

  7. JavaScript Patterns 6.2 Expected Outcome When Using Classical Inheritance

    // the parent constructor function Parent(name) { this.name = name || 'Adam'; } // adding functional ...

  8. R语言中的循环函数(Grouping Function)

    R语言中有几个常用的函数,可以按组对数据进行处理,apply, lapply, sapply, tapply, mapply,等.这几个函数功能有些类似,下面介绍下这几个函数的用法. Apply 这是 ...

  9. Access界面基础操作

    1. 显示表 2. 条件“或” SELECT 研究生.姓名, 研究生.性别, 研究生.入学分数 FROM 研究生 WHERE (研究生.性别="女" AND 研究生.入学分数< ...

  10. iOS解决隐藏导航栏后,打开照片选择器后导航栏不显示的问题以及更换导航栏背景色

    问题描述: 遇到一种情况,在一个控制器上(隐藏了导航栏),打开照片选择器 UIImagePickerController后,照片选择器头部一片空白,且上滑相册时,信息会有错乱效果. 原因分析: 通过查 ...