CF2087H Nim with Special Numbers
题目描述
让我们回顾一下“Nim”游戏的规则。该游戏由两名玩家轮流进行。他们面前有若干堆石子(每堆石子的数量可以相同也可以不同,堆的大小即为石子的数量)。每位玩家在自己的回合,必须选择任意一堆非空的石子,并从中取走任意数量的石子(至少取一个)。无法进行操作的玩家判负。
在本题中,游戏规则进行了修改。存在一个特殊的数字集合 $S$,它禁止某些操作。对于集合中的每个数字 $s_i$,如果当前某堆石子的数量严格大于 $s_i$,则不能通过一次操作使该堆的数量严格小于 $s_i$。换句话说,若当前某堆石子的数量为 $x$,玩家尝试将其变为 $y$,且存在某个 $s_i \in S$ 满足 $x > s_i > y$,那么这样的操作是不允许的。
你的任务如下。初始时集合 $S$ 为空。你需要处理三种类型的操作:
- 向集合中添加某个数字 $s_i$;
- 从集合中移除某个数字 $s_i$;
- 判断在当前规则下,若有若干堆石子,堆的大小分别为 $a_1, a_2, \dots, a_k$,由两名玩家轮流操作,假设双方都采取最优策略,谁会获胜。
输入格式
第一行包含一个整数 $q$($1 \le q \le 3 \times 10^5$),表示操作的数量。
接下来的每一行描述一个操作,格式如下:
- $1\ s_i$($1 \le s_i \le 3 \times 10^5$):如果数字 $s_i$ 已在集合 $S$ 中,则将其移除;否则将其加入集合 $S$;
- $2\ k_i\ a_{i,1}\ a_{i,2}\ \dots\ a_{i,k_i}$($1 \le k_i \le 3$,$1 \le a_{i,j} \le 3 \times 10^5$):判断在当前规则下,若有 $k_i$ 堆石子,堆的大小分别为 $a_{i,1}, a_{i,2}, \dots, a_{i,k_i}$,谁会获胜。
输出格式
对于每个类型为 $2$ 的操作,若先手必胜则输出 First,否则输出 Second。
说明/提示
由 ChatGPT 4.1 翻译