| 比赛场次 | 731 |
|---|---|
| 比赛名称 | 期末考试4 |
| 比赛状态 | 已结束比赛成绩 |
| 开始时间 | 2026-02-12 08:00:00 |
| 结束时间 | 2026-02-12 12:30:00 |
| 开放分组 | 全部用户 |
| 组织者 | HXF |
| 注释介绍 |
| 题目名称 | 区间消除 |
|---|---|
| 输入输出 | dump.in/out |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 512 MiB |
| 测试点数 | 25 简单对比 |
| 用户 | 结果 | 时间 | 内存 | 得分 |
|---|---|---|---|---|
|
|
AAAAAAAAAAAAAAAAAAAA AAAAA |
3.670 s | 4.07 MiB | 100 |
|
|
AAAAAAAAAAWWWWWWWWWW WWWWW |
0.220 s | 3.85 MiB | 40 |
|
|
AAAAAAAAAAEEEEEEEEEE EEEEE |
2.437 s | 3.57 MiB | 40 |
|
|
AAAAAAAAAATTTTTTTTTT TTTTT |
16.570 s | 8.79 MiB | 40 |
|
|
AAAAAAAAAATTTTTTTTTT TTTTT |
16.657 s | 47.50 MiB | 40 |
|
|
AAAAWWAAAAMMMMMMMMMM MMMMM |
2.232 s | 1.47 MiB | 32 |
|
|
AAAATTAAAAEEEEEEEEEE EEEEE |
4.671 s | 13.42 MiB | 32 |
|
|
AAAAWWAAAATTTTTTTTTT TTTTT |
16.570 s | 1.66 MiB | 32 |
|
|
AAAAAATTTTTTTTTTTTTT TTTTT |
20.978 s | 31.19 MiB | 24 |
给定一个长度为 $n$ 的序列 $A$。
我们定义一个消除操作:对于一个序列长度为 $n$ 的序列 $B$ 以及一个分割点 $k$ ($n > 1, k < n$),将 $B$ 分割成 $B_{[1, k]}$ 和 $B_{(k, n]}$,分别计算两个序列的异或和,然后保留较大 的那个区间(如果两个区间异或和相同,那么任选一个保留)。
不断进行消除操作直到序列长度最终为 $1$,即只有一个位置被保留下来。
对于每个位置 $i$,查询 $i$ 是否可以称为被保留下来的位置。
第一行一个整数 $q$ 表示查询次数。
对于每组查询:
一行一个整数 $n$ 表示序列长度为 $n$。
接下来一行 $n$ 个整数表示序列 $A$。
输出 $q$ 行。
一行一个长度为 $n$ 的 01 串表示每个位置是否可以被保留到最后。
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
111111 10101 0001000000 11111 11001 1
数据按以下方式分组:
第一组 $16pts$:满足 $q = 1, n \le 10$。
第二组 $8pts$:满足 $q = 1, n \le 3000, A_i = 0/1$。
第三组 $16pts$:满足 $q \le 10, n \le 100$。
第四组 $60pts$:满足 $q \le 10, n \le 3000$。
对于所有数据,有 $A_i < 2^{60}$。