#P9081. 「HNOI2021 省集 Day3」合成小丹
「HNOI2021 省集 Day3」合成小丹
题目描述
丹最喜欢做的两件事情分别是踩人和位运算,所以现在他要用位运算来踩你。
丹给了你 个范围在 内的非负整数,你需要执行下面两种操作共 次:
- 选择两个非负整数 和 ,将两个非负整数合成成一个非负整数 ,其中 。(这里的运算符 表示的是按位或)
- 选择一个非负整数 并将其删去。
不难发现每次操作后你拥有的整数数量都会减少恰好一个,所以在 次操作后你会拥有恰好一个非负整数,你需要最小化剩下来的这个整数的值。你只需要输出最后这个非负整数的值。
输入格式
从文件 merge.in
中读入数据。
本题包含多组数据,输入第一行一个整数 表示数据组数,对于每组测试数据:
第一行两个正整数 ,含义见题面。
第二行 个非负整数 ,描述你一开始拥有哪些数。
输出格式
输出到文件 merge.out
中。
对于每组测试数据:
输出一行一个非负整数表示最后你剩下来的值最小是什么。
样例
样例 1
3
3 4
9 10 12
4 3
7 7 7 7
7 3
5 2 0 1 3 1 4
5
1
0
在第一组数据中一种最优的操作方案:
一开始你拥有的整数有 ;第一次操作选择删除整数 ,你拥有的整数有 ;第二次操作选择合并整数 和 ,,你拥有的整数有 ;最后你剩下的整数为 ,不难发现没有更优的做法了。
在第二组数据中一种最优的操作方案:
一开始你拥有的整数有 ;第一次操作选择合并整数 和 ,,你拥有的整数有 ;第二次操作选择合并整数 和 ,你拥有的整数有 ;第三次操作选择合并整数 和 ,,你拥有的整数有 ;最后你剩下的整数为 ,不难发现没有更优的做法了。
在第三组数据中一种最优的操作方案:
删掉除了 以外的其他整数。
样例 2
见选手目录下的 merge/merge2.in
与 merge/merge2.ans
。
该样例满足测试点 的性质。
样例 3
见选手目录下的 merge/merge3.in
与 merge/merge3.ans
。
该样例满足测试点 的性质。
数据范围
对于所有测试点,满足 ,,,。
每个测试点的具体限制见下表:
测试点编号 | 特殊性质 | ||
---|---|---|---|
无 | |||
无 |
特殊限制 :保证所有 都可以表示成 的整数次幂。