A5649. 「CSP-S 2024」擂台游戏
编程题
NOI/NOI+/CTSC
知识点
题目描述
小 S 想要举办一场擂台游戏,如果共有 $2^k$ 名选手参加,那么游戏分为 $k$ 轮进行:
- 第一轮编号为 $1, 2$ 的选手进行一次对局,编号为 $3, 4$ 的选手进行一次对局,以此类推,编号为 $2^k - 1, 2^k$ 的选手进行一次对局。
- 第二轮在只保留第一轮的胜者的前提下,相邻的两位依次进行一场对局。
- 以此类推,第 $k - 1$ 轮在只保留第 $k - 2$ 轮的 $4$ 位胜者的前提下,前两位、后两位分别进行对局,也就是所谓的半决赛。
- 第 $k$ 轮即为半决赛两位胜者的决赛。
确定了游戏晋级的规则后,小 S 将比赛的规则设置为了擂台赛。具体而言,每位选手都有一个能力值 $a_1, a_2, \dots , a_{2^k}$,能力值为 $[0,2^{31}-1]$ 之内的整数。对于每场比赛,会先抽签决定一个数 $0/1$,我们将第 $R$ 轮的第 $G$ 场比赛抽到的数记为 $d_{R,G}$。抽到 $0$ 则表示表示编号小的选手为擂主,抽到 $1$ 则表示编号大的选手为擂主。擂主获胜当且仅当他的能力值 $a\geq R$。也就是说,游戏的胜负只取决于**擂主的能力值**与**当前比赛是第几轮**的大小关系,**与另一位的能力值无关**。
现在,小 S 先后陆续收到了 $n$ 位选手的报名信息,他们分别告知了小 S 自己的能力值。小 S 会按照报名的先后顺序对选手进行编号为 $1, 2, \dots, n$。小 S 关心的是,补充**尽量少**的选手使总人数为 $2$ 的整次幂,且所有选手进行一次完整的擂台游戏后,所有可能成为总冠军的选手的**编号之和**是多少。
形式化地,设 $k$ 是最小的非负整数使得 $2^k\geq n$,那么应当补充 $(2^k-n)$ 名选手,且补充的选手的能力值可以任取 $[0,2^{31}-1]$ 之内的整数。**如果补充的选手有可能取胜,也应当计入答案中**。
当然小 S 觉得这个问题还是太简单了,所以他给了你 $m$ 个询问 $c_1,c_2,\dots,c_m$。小 S 希望你帮忙对于每个 $c_i$ 求出,在只收到前 $c_i$ 位选手的报名信息时,这个问题的答案是多少。
- 第一轮编号为 $1, 2$ 的选手进行一次对局,编号为 $3, 4$ 的选手进行一次对局,以此类推,编号为 $2^k - 1, 2^k$ 的选手进行一次对局。
- 第二轮在只保留第一轮的胜者的前提下,相邻的两位依次进行一场对局。
- 以此类推,第 $k - 1$ 轮在只保留第 $k - 2$ 轮的 $4$ 位胜者的前提下,前两位、后两位分别进行对局,也就是所谓的半决赛。
- 第 $k$ 轮即为半决赛两位胜者的决赛。
确定了游戏晋级的规则后,小 S 将比赛的规则设置为了擂台赛。具体而言,每位选手都有一个能力值 $a_1, a_2, \dots , a_{2^k}$,能力值为 $[0,2^{31}-1]$ 之内的整数。对于每场比赛,会先抽签决定一个数 $0/1$,我们将第 $R$ 轮的第 $G$ 场比赛抽到的数记为 $d_{R,G}$。抽到 $0$ 则表示表示编号小的选手为擂主,抽到 $1$ 则表示编号大的选手为擂主。擂主获胜当且仅当他的能力值 $a\geq R$。也就是说,游戏的胜负只取决于**擂主的能力值**与**当前比赛是第几轮**的大小关系,**与另一位的能力值无关**。
现在,小 S 先后陆续收到了 $n$ 位选手的报名信息,他们分别告知了小 S 自己的能力值。小 S 会按照报名的先后顺序对选手进行编号为 $1, 2, \dots, n$。小 S 关心的是,补充**尽量少**的选手使总人数为 $2$ 的整次幂,且所有选手进行一次完整的擂台游戏后,所有可能成为总冠军的选手的**编号之和**是多少。
形式化地,设 $k$ 是最小的非负整数使得 $2^k\geq n$,那么应当补充 $(2^k-n)$ 名选手,且补充的选手的能力值可以任取 $[0,2^{31}-1]$ 之内的整数。**如果补充的选手有可能取胜,也应当计入答案中**。
当然小 S 觉得这个问题还是太简单了,所以他给了你 $m$ 个询问 $c_1,c_2,\dots,c_m$。小 S 希望你帮忙对于每个 $c_i$ 求出,在只收到前 $c_i$ 位选手的报名信息时,这个问题的答案是多少。
输入格式
从文件
**本题的测试点包含有多组测试数据。** 但不同测试数据只是通过修改 $a_1, a_2, \dots , a_n$ 得到,其他内容均保持不变,请参考以下格式。其中 $\oplus$ 代表异或运算符,$a \bmod b$ 代表 $a$ 除以 $b$ 的余数。
输入的第一行包含两个正整数 $n, m$,表示报名的选手数量和询问的数量。
输入的第二行包含 $n$ 个非负整数 $a'_1,a'_2,\dots,a'_n$,这列数将用来计算真正的能力值。
输入的第三行包含 $m$ 个正整数 $c_1, c_2, \dots , c_m$,表示询问。
设 $K$ 是使得 $2^K \geq n$ 的最小的非负整数,接下来的 $K$ 行当中,第 $R$ 行包含 $2^{K-R}$ 个数(无空格),其中第 $G$ 个数表示第 $R$ 轮的第 $G$ 场比赛抽签得到的 $d_{R,G}=0/1$。
注意,由于询问只是将人数凑齐到 $2^k\geq c_i$,这里的 $k\leq K$,因此你未必会用到全部的输入值。
接下来一行包含一个正整数 $T$,表示有 $T$ 组测试数据。
接下来共 $T$ 行,每行描述一组数据,包含 $4$ 个非负整数 $X_0,X_1,X_2,X_3$,该组数据的能力值 $a_i=a'_i \oplus X_{i\bmod 4}$,其中 $1\leq i\leq n$。
arena.in 中读入数据。**本题的测试点包含有多组测试数据。** 但不同测试数据只是通过修改 $a_1, a_2, \dots , a_n$ 得到,其他内容均保持不变,请参考以下格式。其中 $\oplus$ 代表异或运算符,$a \bmod b$ 代表 $a$ 除以 $b$ 的余数。
输入的第一行包含两个正整数 $n, m$,表示报名的选手数量和询问的数量。
输入的第二行包含 $n$ 个非负整数 $a'_1,a'_2,\dots,a'_n$,这列数将用来计算真正的能力值。
输入的第三行包含 $m$ 个正整数 $c_1, c_2, \dots , c_m$,表示询问。
设 $K$ 是使得 $2^K \geq n$ 的最小的非负整数,接下来的 $K$ 行当中,第 $R$ 行包含 $2^{K-R}$ 个数(无空格),其中第 $G$ 个数表示第 $R$ 轮的第 $G$ 场比赛抽签得到的 $d_{R,G}=0/1$。
注意,由于询问只是将人数凑齐到 $2^k\geq c_i$,这里的 $k\leq K$,因此你未必会用到全部的输入值。
接下来一行包含一个正整数 $T$,表示有 $T$ 组测试数据。
接下来共 $T$ 行,每行描述一组数据,包含 $4$ 个非负整数 $X_0,X_1,X_2,X_3$,该组数据的能力值 $a_i=a'_i \oplus X_{i\bmod 4}$,其中 $1\leq i\leq n$。
输出格式
输出到文件
共输出 $T$ 行,对于每组数据,设 $A_i$ 为第 $i$($1 \leq i \leq m$)组询问的答案,你只需要输出一行包含一个整数,表示 $(1\times A_1) \oplus (2\times A_2) \oplus \dots \oplus (m\times A_m)$ 的结果。
arena.out 中。共输出 $T$ 行,对于每组数据,设 $A_i$ 为第 $i$($1 \leq i \leq m$)组询问的答案,你只需要输出一行包含一个整数,表示 $(1\times A_1) \oplus (2\times A_2) \oplus \dots \oplus (m\times A_m)$ 的结果。
输入输出样例
输入 #1
5 5 0 0 0 0 0 5 4 1 2 3 1001 10 1 4 2 1 0 0 1 2 1 0 0 2 3 1 2 2 0 1
输出 #1
5 19 7 1
说明/提示
对于所有测试数据,保证:$2 \leq n, m \leq 10^5$,$0 \leq a_i, X_j < 2^{31}$,$1 \leq c_i \leq n$,$1 \leq T \leq 256$。
| 测试点 | $T=$ | $n,m\leq$ | 特殊性质 A | 特殊性质 B |
| :----------: | :----------: | :----------: | :----------: | :----------: |
| $1\sim 3$ | $1$ | $8$ | 否 | 否 |
| $4,5$ | $1$ | $500$ | 是 | 否 |
| $6\sim 8$ | $1$ | $500$ | 否 | 是 |
| $9,10$ | $1$ | $5000$ | 否 | 否 |
| $11,12$ | $1$ | $10^5$ | 是 | 否 |
| $13\sim 15$ | $1$ | $10^5$ | 否 | 是 |
| $16,17$ | $4$ | $10^5$ | 否 | 否 |
| $18,19$ | $16$ | $10^5$ | 否 | 否 |
| $20,21$ | $64$ | $10^5$ | 否 | 否 |
| $22,23$ | $128$ | $10^5$ | 否 | 否 |
| $24,25$ | $256$ | $10^5$ | 否 | 否 |
特殊性质 A:保证询问的 $c_i$ 均为 $2$ 的幂次。
特殊性质 B:保证所有的 $d_{R,G} = 0$。
| 测试点 | $T=$ | $n,m\leq$ | 特殊性质 A | 特殊性质 B |
| :----------: | :----------: | :----------: | :----------: | :----------: |
| $1\sim 3$ | $1$ | $8$ | 否 | 否 |
| $4,5$ | $1$ | $500$ | 是 | 否 |
| $6\sim 8$ | $1$ | $500$ | 否 | 是 |
| $9,10$ | $1$ | $5000$ | 否 | 否 |
| $11,12$ | $1$ | $10^5$ | 是 | 否 |
| $13\sim 15$ | $1$ | $10^5$ | 否 | 是 |
| $16,17$ | $4$ | $10^5$ | 否 | 否 |
| $18,19$ | $16$ | $10^5$ | 否 | 否 |
| $20,21$ | $64$ | $10^5$ | 否 | 否 |
| $22,23$ | $128$ | $10^5$ | 否 | 否 |
| $24,25$ | $256$ | $10^5$ | 否 | 否 |
特殊性质 A:保证询问的 $c_i$ 均为 $2$ 的幂次。
特殊性质 B:保证所有的 $d_{R,G} = 0$。