#P17124. [ICPC 2025 Shanghai R] Not a subset sum

    ID: 19461 远端评测题 1000ms 1024MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>2025上海深度优先搜索 DFS记忆化搜索ICPC

[ICPC 2025 Shanghai R] Not a subset sum

背景

试题来自 清华大学学生算法协会

题目描述

给定一个长度为 2n2^n 的数组 a0,a1,,a2n1a_0, a_1, \cdots, a_{2^n - 1}。对于一个由字符 0,1,?0, 1, ? 组成的长度为 nn 的字符串 qq(下标从 11 开始),定义“广义子集和” S(q)S(q) 为所有满足以下条件的下标 jj 对应的 aja_j 之和:

  • 对于每个 1kn1 \le k \le n,如果 qk=0q_k = 0,则 jj 的第 kk 位为 00
  • 对于每个 1kn1 \le k \le n,如果 qk=1q_k = 1,则 jj 的第 kk 位为 11
  • 如果 qk=?q_k = ?,则对 jj 的第 kk 位没有限制。

例如,当 n=3n = 3q=0?1q = 0?1 时,广义子集和为 S(q)=a4+a6S(q) = a_4 + a_6(即二进制 100100110110)。注意,第一位是最低位。

你的任务是计算所有长度为 nn、由字符 0,1,?0, 1, ? 构成的字符串所对应的广义子集和。因为输出总量可能很大,你只需输出所有这些和的按位异或结果。

输入格式

输入的第一行包含一个整数 nn (1n161 \le n \le 16)。

输入的第二行包含 2n2^n 个整数 a0,a1,,a2n1a_0, a_1, \cdots, a_{2^n - 1} (0ai90 \le a_i \le 9),即数组 aa 的内容。

输出格式

输出一个整数,表示所有广义子集和的按位异或。

1
3 5
14
2
2 6 8 8
0

提示

以下是样例 2 中的查询字符串 qq 及其对应的广义子集和 S(q)S(q)

q=00q = 00, S(q)=a0=2S(q) = a_0 = 2

q=10q = 10, S(q)=a1=6S(q) = a_1 = 6

q=?0q = ?0, S(q)=a0+a1=2+6=8S(q) = a_0 + a_1 = 2 + 6 = 8

q=01q = 01, S(q)=a2=8S(q) = a_2 = 8

q=11q = 11, S(q)=a3=8S(q) = a_3 = 8

q=?1q = ?1, S(q)=a2+a3=16S(q) = a_2 + a_3 = 16

q=0?q = 0?, S(q)=a0+a2=10S(q) = a_0 + a_2 = 10

q=1?q = 1?, S(q)=a1+a3=14S(q) = a_1 + a_3 = 14

q=??q = ??, S(q)=a0+a1+a2+a3=24S(q) = a_0 + a_1 + a_2 + a_3 = 24

现在容易验证输出为 00

翻译由 DeepSeek V4 Pro 完成