CF1556G Gates to Another World

题目描述

如前所述,William 非常喜欢玩电子游戏。在他最喜欢的游戏之一中,玩家角色处于一个宇宙中,每个星球都用一个从 $0$ 到 $2^n - 1$ 的二进制数编号。在每个星球上,都有传送门允许玩家从星球 $i$ 移动到星球 $j$,当且仅当 $i$ 和 $j$ 的二进制表示恰好有一位不同。 William 想考考你,看你能否处理这个游戏宇宙中的以下查询: - 毁灭编号从 $l$ 到 $r$(包含 $l$ 和 $r$)的星球。这些星球将无法再被到达。 - 判断是否可以通过若干次星球传送门,从星球 $a$ 到达星球 $b$。保证 $a$ 和 $b$ 没有被毁灭。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \leq n \leq 50$,$1 \leq m \leq 5 \times 10^4$),分别表示每个星球编号的二进制位数和查询的数量。 接下来的 $m$ 行,每行包含一条查询,格式如下: block l r —— 表示毁灭编号从 $l$ 到 $r$ 的星球($0 \leq l \leq r < 2^n$)。保证每个星球不会被毁灭两次。 ask a b —— 表示询问是否可以从星球 $a$ 到达星球 $b$($0 \leq a, b < 2^n$)。保证 $a$ 和 $b$ 没有被毁灭。

输出格式

对于每个 ask 查询,如果可以从星球 $a$ 到达星球 $b$,输出一行 "1";否则输出一行 "0"(不带引号)。

说明/提示

第一个样例可以如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1556G/55cb79beabdec984b13918f19792c5f801d55644.png) 对于查询 ask 0 7,答案为正(可以到达)。 在执行 block 3 6 查询后,图变为如下所示(被毁灭的顶点已高亮): ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1556G/543aa936604b4e2d226365791a56962070845e5c.png) 此时对于查询 ask 0 7,答案为负(无法到达),因为从顶点 $0$ 到顶点 $7$ 的任意路径都必须经过被毁灭的顶点。 由 ChatGPT 4.1 翻译