题面
问题描述
题目背景
xor \operatorname{xor} xor 好, xor \operatorname{xor} xor 妙…
题目描述
小 L 喜欢异或,他觉得异或最好玩了。
小 Z 突然问了小 L 一个问题:
请构造出一个长度为 n n n 序列 a a a,该序列满足给出的 m m m 个条件。
每个条件形如 x y
,意味着 ⨁ i = 1 x a i = y \bigoplus_{i=1}^x a_i=y ⨁i=1xai=y(其中 ⨁ \bigoplus ⨁ 为 c++
语言中的 ^
符号)。
小 L 脑子坏了,构造不出来,于是向聪明的你求助,你能帮帮他吗?如果没有符合条件的序列请输出 -1
。
输入格式
输入文件名为 xor.in
。
输入文件的第一行,包含两个整数 n , m n,m n,m,表示序列的长度和条件个数。
接下来 m m m 行,每行两个整数 x , y x,y x,y,意义如题面所示。
输出格式
输出文件名为 xor.out
。
输出文件只有一行,包含 n n n 个整数,表示你构造出的序列。
本题含有 Special Judge。
如果满足条件的序列有多个,你可以输出任意一个序列。
但是对于输出的每个元素必须满足 a i ∈ [ 1 , 2 × 1 0 9 ] a_i\in [1,2\times 10^9] ai∈[1,2×109]。
Special Judge 将在下发文件里给出。
输入输出样例 1
xor.in
5 2
3 0
2 3
xor.out
1 2 3 1 3
见选手目录下的 xor/xor1.in 和 xor/xor1.out。
输入输出样例 1 说明
该序列必须要满足两个条件, a 1 xor a 2 xor a 3 = 0 a_1\operatorname{xor}a_2\operatorname{xor}a_3=0 a1xora2xora3=0, a 1 xor a 2 = 3 a_1\operatorname{xor}a_2=3 a1xora2=3。
样例 1 的输出给出了一个符合条件的序列。
输入输出样例 2
xor.in
6 1
2 4
xor.out
6 2 4 3 1 4
见选手目录下的 xor/xor2.in 和 xor/xor2.out。
输入输出样例 3
xor.in
2 2
1 2
2 2
xor.out
-1
见选手目录下的 xor/xor3.in 和 xor/xor3.out。
数据规模与约定
对于 100 % 100\% 100% 的数据, 1 ≤ n , m ≤ 1 0 6 1\le n,m\le 10^6 1≤n,m≤106, 1 ≤ x ≤ n 1\le x\le n 1≤x≤n, 0 ≤ y ≤ 1 0 9 0\le y\le 10^9 0≤y≤109。
测试点编号 | n n n | m m m |
---|---|---|
1 ∼ 3 1\sim 3 1∼3 | ≤ 10 \le 10 ≤10 | ≤ 10 \le 10 ≤10 |
4 ∼ 10 4\sim 10 4∼10 | ≤ 2 × 1 0 3 \le 2\times 10^3 ≤2×103 | ≤ 2 × 1 0 3 \le 2\times 10^3 ≤2×103 |
11 ∼ 14 11\sim 14 11∼14 | ≤ 1 0 5 \le 10^5 ≤105 | ≤ 1 0 5 \le 10^5 ≤105 |
15 ∼ 16 15\sim 16 15∼16 | / | 1 1 1 |
17 ∼ 20 17\sim 20 17∼20 | / | / |
保证数据随机。(是不是很良心)
Solution
az,异或?这不是字典树嘛,第一题就这么坑?
令人开心的是,全部输出 -1
珂以得15分。(看来真的是随机数据)
在这里,我们假设 ⨁ i = 1 x 1 a i = y 1 \bigoplus_{i=1}^{x_1} a_i=y_1 ⨁i=1x1ai=y1 , ⨁ i = 1 x 2