春招模拟赛第八场|微众银行|2023.04.12机试
- Status
- Done
- Rule
- IOI
- Problem
- 3
- Start at
- 2023-4-20 19:00
- End at
- 2023-4-20 21:00
- Duration
- 2 hour(s)
- Host
- Partic.
- 37
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
塔子哥是一个收藏家,他喜欢收藏某个游戏的里的方块,他的游戏仓库里现在有从 1 到 4095 编号的方块,每个方块所具有的特征我们将其定义为其编号在二进制下为 1 的位置所具有的特征。 例如 3 号方块我们就认为其具有 1 号特征和 2 号特征,而 4 号方块我们认为其只具有 3 号特征。
虽然塔子哥已经集齐了全套,但是他还想要收藏更多的方块,所以塔子哥每天都会收购一堆新方块,这些方块全部都放在仓库里并没有分类,而且塔子哥想直接分类显然是很麻烦的一件事,因此塔子哥想用游戏里的道具魔法收纳器来对这些方块进行初分类。
魔法收纳器的具体用法如下:先将塔子哥拥有的方块进行附魔,然后收纳器就会自动吸附上含有全部这些对应特征的方块。
例如如果塔子哥拿 4 号方块对魔法收纳器进行附魔,那么收纳器就可以吸附上编号为 4(0100)2 , 5(0101)2 , 7(0111)2 等方块,但编号 1(0001)2 , 3(0011)2 , 8(1000)2 的方块则无法被吸附(因为这些方块没有包含特征 3 类)。
但使用魔法收纳器在这个游戏里比较珍贵,但是不想自己一个个去观察分类,所以塔子哥只想用魔法收纳器先把这些堆在门口的方块收回家里,因此塔子哥想知道他最少使用几个数字方块对魔法收纳器附魔才能使得所有堆在门口的方块都能搬到房内。
(注意:没有 0 号方块和 0 号数字方块,附魔是用你手中有的编号从 1 到 4095 的数字方块而不是你当天收到的方块,即用来附魔的数字方块不需要是当天有的)
第一行一个 T ( T≤10 ),表示有 T 天,每天输入格式如下:
第一行一个 n ( n≤105 )表示有个 n 方块,接下来一行 n 个整数 ai ( ai∈[1,4095] ),表示每个方块的编号。
所有天数的方块加起来总数不会超过 105 。
对于所有的数据, 1≤n≤105 。
对于每一天输出格式如下:
输出第一行一个数字 m ,表示最少需要 m 种数字方块,接下来一行 m 个数字,从小到大依次给出数字方块编号,用空格隔开,如果有多种合法最小方案,输出字典序最小的方案。
A 字典序比 B 小是指, A 序列第一个与 B 序列数字不同的地方, A 的数字小于 B ,例如 2,3,4,9
小于 2,3,8,9
, 1,2,3,4
小于 4,5,6,7
。
输入
1
5
2 3 4 1 7
输出
3
1 2 4
思路:
暴力枚举 + bitset优化
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5 +5;
int a[maxn];
本题属于以下题库,请选择所需题库进行购买