欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
S42108.21-8 对齐异或
21-8 对齐异或
对齐异或
系数提取完了,但Echo-0的加密还有一个维度——异或。不是普通的加法,是异或。
"异或?"CC问。
"对。"你说,"给定个数,选一个子集,使得异或和最大。"
"子集?"
"对。"你说,"任意选一些数,把它们异或起来。"
"最大?"
"对。"你说,"让结果的二进制位尽可能高。"
"咋算?"
"线性基。"你说,"把每个数看成向量,用高斯消元的方法,构建一组基。"
"基?"
"对。"你说,"线性基里的每个数,最高位都不同。用它们可以表示任意子集异或和。"
"最大?"
"从高位到低位贪心。"你说,"如果异或上某个基能让结果更大,就异或。"
"第47个数。"你说,"值为47——二进制。"
"高位的1在哪?"
"第5位(从0开始)。"你说,"值为32。"
"能进基吗?"
"看前面有没有同样高位的。"你说,"如果没有,就能进。"
"进了有啥用?"
"可以表示所有最高位在第5位的数。"你说,"组合起来,能得到更大的异或和。"
CC看着那些二进制位——像一排灯,像一排开关,像某种只有0和1的世界。
"0和1。"她说,"简单。"
"对。"你说,"简单。"
"但我喜欢简单。"她说,"简单清楚。"
"我也喜欢。"你说。
Echo把线性基投射出来——像一座塔,像一组支柱,像某种支撑起整个空间的东西。
"以前这些基是散的。"她说,"现在……对齐了。"
"对齐了。"你说。
"对。"她说,"对齐了。"
题目描述
给定个数,求选一些数异或起来,能得到的最大值。
输入格式
第一行。第二行个整数。
输出格式
最大异或和。
输入样例
3
2
1 2
4
1 2 3 4
2
1 1
4
1 2 3 4
3
1 2 3
5
1 2 3 4 5
输出样例
Case #1:
1
2
3
-1
Case #2:
0
1
-1
-1
Case #3:
0
1
2
3
-1
提示
- 线性基:高斯消元思想,维护每个最高位对应的基向量。
- 从高位到低位贪心,求最大值。
- 时间复杂度。
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |