#CF1863F. 分割、异或与征服

分割、异或与征服

分割、异或与征服

  • 时间限制:2 秒
  • 内存限制:256 MiB

题目描述

给定一个长度为 nn 的整数数组 aa。

当前保留的数组始终是原数组的一个连续区间 [l,r][l,r]。当 l<rl<r 时,可以任选 kk(l≤k<rl\le k<r),把区间分为 [l,k][l,k] 与 [k+1,r][k+1,r]。令两部分的元素异或和分别为 xx 和 yy:

  • 若 x<yx<y,丢弃左边部分;
  • 若 x>yx>y,丢弃右边部分;
  • 若 x=yx=y,可以任选一边丢弃。

不断操作直到区间只剩一个元素。请对每个位置 ii 判断,是否存在一种操作方案使最后只剩下原数组的第 ii 个元素。

输入格式

第一行一个整数 tt,表示测试用例数量。

每个测试用例第一行一个整数 nn;第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

对每个测试用例输出一个长度为 nn 的二进制字符串。第 ii 个字符为 1 表示第 ii 个元素可能成为最后剩下的元素,否则为 0。

样例输入 1

6
6
3 2 1 3 7 4
5
1 1 1 1 1
10
1 2 4 8 4 1 2 3 4 5
5
0 0 0 0 0
5
1 2 3 0 1
1
100500

样例输出 1

111111
10101
0001000000
11111
11001
1

数据范围

1≤t≤1041\le t\le10^4,1≤n≤1041\le n\le10^4,0≤ai<2600\le a_i<2^{60},且所有测试用例的 nn 之和不超过 10410^4。

子任务编号 分值 特殊限制
1 20 每个 n≤9n\le9,且 ∑n≤45\sum n\le45
2 40 每个 n≤200n\le200,且 ∑n≤1000\sum n\le1000
3 无特殊限制