HM202 货架互换与瘦身
HM202 货架互换与瘦身
来源: 第 202 集 vector容器-互换容器
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
两座货架可以用成员函数 swap 互换全部元素:v1.swap(v2) 之后,原先在 v1 上的货物全部到 v2,反之亦然。
swap 还有一个实际用途:给过大的容量瘦身。反复尾插后容量往往大于大小;再 resize 变短时,**容量不会跟着缩小**,多出来的坑就被浪费了。可以构造一个匿名对象,再和原货架互换:
vector<int>(v).swap(v)
匿名对象按当前元素个数拷贝构造,容量与大小相同;互换之后原货架指向这块紧凑空间。匿名对象带着那块浪费的大空间,本行结束时由系统回收。
本题分两步:
- 读入两座货架,先打印交换前,再
swap,再打印交换后。 - 另建一座货架,把第一座货架读入时的那 \(n\) 个数重新尾插一遍,再
resize(k)(保证 \(k < n\))。先输出此时的大小,以及「容量是否严格大于大小」;再按上面的写法收缩内存,输出大小,以及「容量是否等于大小」。
不要输出容量的具体数字。
输入格式
第一行一个整数 \(n\)。
第二行 \(n\) 个整数 \(a_i\),依次尾插入 v1。
第三行一个整数 \(m\)。
第四行 \(m\) 个整数 \(b_i\),依次尾插入 v2。
第五行一个整数 \(k\),表示收缩演示里的 resize(k)。
输出格式
第一、二行:交换前的 v1、v2。
第三、四行:交换后的 v1、v2。
第五行两个整数:resize 之后的 size(),以及 capacity() > size() 则为 1 否则 0。
第六行两个整数:收缩之后的 size(),以及 capacity() == size() 则为 1 否则 0。
每行元素之间一个空格,行末无多余空格。空货架输出空行。
样例
输入 #1
10
0 1 2 3 4 5 6 7 8 9
10
10 9 8 7 6 5 4 3 2 1
3
输出 #1
0 1 2 3 4 5 6 7 8 9
10 9 8 7 6 5 4 3 2 1
10 9 8 7 6 5 4 3 2 1
0 1 2 3 4 5 6 7 8 9
3 1
3 1
输入 #2
5
1 2 3 4 5
3
8 8 8
1
输出 #2
1 2 3 4 5
8 8 8
8 8 8
1 2 3 4 5
1 1
1 1
说明
\(1 \le k < n \le 1000\),\(1 \le m \le 1000\),元素绝对值不超过 \(10^9\)。
先尾插 \(n\) 个再 resize(k) 时,标准规定容量不会因截短而减小,因此容量一定严格大于大小。按匿名对象 swap 收缩后,容量应等于大小。
信息
- ID
- 1201
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者