HM200 货架插删
HM200 货架插删
来源: 第 200 集 vector容器-插入和删除
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
动态数组在尾部做快速装卸,也可以把迭代器放到指定偏移处插入或删除。insert 和 erase 的位置参数必须是迭代器,**不能把 \(0,1,2\) 这种整数下标直接传进去**。
常用操作如下:
push_back(x):尾插。pop_back():尾删。insert(begin()+p, x):在偏移 \(p\) 处插入一个 \(x\)。insert(begin()+p, k, x):在偏移 \(p\) 处连续插入 \(k\) 个相同的 \(x\)(重载版本)。erase(begin()+p):删掉偏移 \(p\) 处的一个元素。erase(begin()+L, begin()+R):删掉半开区间 \([L,R)\)。若区间正好是 \([0,\textit{size})\),效果等同于清空。clear():专门用来清空整座货架。对整段做区间erase与clear效果相同,但接口不同。
先把输入序列依次尾插入,输出一次当前货架;再执行 \(q\) 条指令,**每条指令执行后再输出一次**。打印使用迭代器。
输入格式
第一行一个整数 \(n\)。
第二行 \(n\) 个整数 \(a_i\),依次 push_back。
第三行一个整数 \(q\)。
接下来 \(q\) 行,每行一条指令:
1 x:尾插 \(x\)2:尾删(保证货架非空)3 p x:在偏移 \(p\) 插入一个 \(x\)(\(0 \le p \le\) 当前大小)4 p k x:在偏移 \(p\) 插入 \(k\) 个 \(x\)5 p:删除偏移 \(p\) 处的元素(\(0 \le p <\) 当前大小)6 L R:删除半开区间 \([L,R)\)(\(0 \le L \le R \le\) 当前大小)7:清空
输出格式
共 \(q+1\) 行。先输出初始货架,再按指令顺序各输出一次。每行用单个空格分隔全部整数,行末无多余空格。空货架输出空行。
样例
输入 #1
5
10 20 30 40 50
6
2
3 0 100
4 0 2 1000
5 0
6 0 6
7
输出 #1
10 20 30 40 50
10 20 30 40
100 10 20 30 40
1000 1000 100 10 20 30 40
1000 100 10 20 30 40
输入 #2
4
1 2 3 4
3
5 1
6 1 3
1 9
输出 #2
1 2 3 4
1 3 4
1
1 9
说明
\(0 \le n \le 1000\),\(1 \le q \le 200\),\(0 \le k \le 100\),所有元素绝对值不超过 \(10^9\)。保证每条指令合法,不会对空货架尾删,也不会给出越界偏移。
样例 #1 对应「尾插一组数 → 尾删 → 头部插一个 → 头部插两个相同值 → 删掉起始位置 → 按 \([0,\textit{size})\) 清空 → 再 clear」。空货架再打印只会多出一个换行。
信息
- ID
- 1199
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2
- 已通过
- 1
- 通过率
- 50%
- 上传者