CF1101G.(Zero XOR Subset)-less
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given an array a1,a2,…,an of integer numbers.
Your task is to divide the array into the maximum number of segments in such a way that:
- each element is contained in exactly one segment;
- each segment contains at least one element;
- there doesn't exist a non-empty subset of segments such that bitwise XOR of the numbers from them is equal to 0 .
Print the maximum number of segments the array can be divided into. Print -1 if no suitable division exists.
输入格式
The first line contains a single integer n ( 1≤n≤2⋅105 ) — the size of the array.
The second line contains n integers a1,a2,…,an ( 0≤ai≤109 ).
输出格式
Print the maximum number of segments the array can be divided into while following the given constraints. Print -1 if no suitable division exists.
输入输出样例
输入#1
4 5 5 7 2
输出#1
2
输入#2
3 1 2 3
输出#2
-1
输入#3
3 3 1 10
输出#3
3
说明/提示
In the first example 2 is the maximum number. If you divide the array into {[5],[5,7,2]} , the XOR value of the subset of only the second segment is 5⊕7⊕2=0 . {[5,5],[7,2]} has the value of the subset of only the first segment being 5⊕5=0 . However, {[5,5,7],[2]} will lead to subsets {[5,5,7]} of XOR 7 , {[2]} of XOR 2 and {[5,5,7],[2]} of XOR 5⊕5⊕7⊕2=5 .
Let's take a look at some division on 3 segments — {[5],[5,7],[2]} . It will produce subsets:
- {[5]} , XOR 5 ;
- {[5,7]} , XOR 2 ;
- {[5],[5,7]} , XOR 7 ;
- {[2]} , XOR 2 ;
- {[5],[2]} , XOR 7 ;
- {[5,7],[2]} , XOR 0 ;
- {[5],[5,7],[2]} , XOR 5 ;
As you can see, subset {[5,7],[2]} has its XOR equal to 0 , which is unacceptable. You can check that for other divisions of size 3 or 4 , non-empty subset with 0 XOR always exists.
The second example has no suitable divisions.
The third example array can be divided into {[3],[1],[10]} . No subset of these segments has its XOR equal to 0 .