AT_abc396_e [ABC396E] Min of Restricted Sum

题目描述

给定整数 $N, M$ 和长度为 $M$ 的整数序列 $X=(X_1,X_2,\ldots,X_M)$、$Y=(Y_1,Y_2,\ldots,Y_M)$、$Z=(Z_1,Z_2,\ldots,Z_M)$。其中,保证 $X$ 和 $Y$ 的所有元素均在 $1$ 至 $N$ 的范围内。 定义长度为 $N$ 的非负整数序列 $A=(A_1,A_2,\ldots,A_N)$ 为 **好的整数序列**,当且仅当满足以下条件: - 对于所有满足 $1 \leq i \leq M$ 的整数 $i$,有 $A_{X_i} \oplus A_{Y_i} = Z_i$,其中 $\oplus$ 表示异或运算。 请判断是否存在这样的好的整数序列。若存在,请找出使得元素总和 $\displaystyle \sum_{i=1}^N A_i$ 最小的好的整数序列,并输出该序列。 关于异或(XOR)的定义: 对于非负整数 $A$ 和 $B$,它们的异或 $A \oplus B$ 定义如下: - $A \oplus B$ 的二进制表示中,$2^k$ 位($k \geq 0$)的值为 $1$,当且仅当 $A$ 和 $B$ 在 $2^k$ 位上的值不同;否则为 $0$。 例如,$3 \oplus 5 = 6$(二进制表示为 $011 \oplus 101 = 110$)。

输入格式

输入通过标准输入给出,格式如下: > $N$ $M$ > $X_1$ $Y_1$ $Z_1$ > $X_2$ $Y_2$ $Z_2$ > $\vdots$ > $X_M$ $Y_M$ $Z_M$

输出格式

若不存在好的整数序列,输出 $-1$。 若存在,则输出满足总和最小的好的整数序列,元素间用空格分隔。 若存在多个总和最小的序列,输出任意一个均可。

说明/提示

### 约束条件 - $1 \leq N \leq 2 \times 10^5$ - $0 \leq M \leq 10^5$ - $1 \leq X_i, Y_i \leq N$ - $0 \leq Z_i \leq 10^9$ - 输入中的所有值均为整数 ### 样例解释 1 序列 $A=(0, 3, 4)$ 满足 $A_1 \oplus A_2 = 3$ 和 $A_1 \oplus A_3 = 4$,因此是好的整数序列。其他可能的序列如 $A=(1, 2, 5)$ 或 $A=(7, 4, 3)$ 也满足条件,但总和最小的序列是 $A=(0, 3, 4)$。 ### 样例解释 2 不存在满足条件的好的整数序列,因此输出 $-1$。 翻译由 DeepSeek R1 完成