CF2087H.Nim with Special Numbers

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

让我们回顾一下“Nim”游戏的规则。该游戏由两名玩家轮流进行。他们面前有若干堆石子(每堆石子的数量可以相同也可以不同,堆的大小即为石子的数量)。每位玩家在自己的回合,必须选择任意一堆非空的石子,并从中取走任意数量的石子(至少取一个)。无法进行操作的玩家判负。

在本题中,游戏规则进行了修改。存在一个特殊的数字集合 SS,它禁止某些操作。对于集合中的每个数字 sis_i,如果当前某堆石子的数量严格大于 sis_i,则不能通过一次操作使该堆的数量严格小于 sis_i。换句话说,若当前某堆石子的数量为 xx,玩家尝试将其变为 yy,且存在某个 si∈Ss_i \in S 满足 x>si>yx > s_i > y,那么这样的操作是不允许的。

你的任务如下。初始时集合 SS 为空。你需要处理三种类型的操作:

  • 向集合中添加某个数字 sis_i;
  • 从集合中移除某个数字 sis_i;
  • 判断在当前规则下,若有若干堆石子,堆的大小分别为 a1,a2,…,aka_1, a_2, \dots, a_k,由两名玩家轮流操作,假设双方都采取最优策略,谁会获胜。

输入格式

第一行包含一个整数 qq(1≤q≤3×1051 \le q \le 3 \times 10^5),表示操作的数量。

接下来的每一行描述一个操作,格式如下:

  • 1 si1\ s_i(1≤si≤3×1051 \le s_i \le 3 \times 10^5):如果数字 sis_i 已在集合 SS 中,则将其移除;否则将其加入集合 SS;
  • 2 ki ai,1 ai,2 … ai,ki2\ k_i\ a_{i,1}\ a_{i,2}\ \dots\ a_{i,k_i}(1≤ki≤31 \le k_i \le 3,1≤ai,j≤3×1051 \le a_{i,j} \le 3 \times 10^5):判断在当前规则下,若有 kik_i 堆石子,堆的大小分别为 ai,1,ai,2,…,ai,kia_{i,1}, a_{i,2}, \dots, a_{i,k_i},谁会获胜。

输出格式

对于每个类型为 22 的操作,若先手必胜则输出 First,否则输出 Second。

输入输出样例

  • 输入#1

    11
    2 2 1 4
    1 2
    2 2 1 4
    2 3 3 1 4
    1 3
    2 3 3 1 4
    2 2 1 4
    1 4
    2 2 1 5
    1 2
    2 2 1 5

    输出#1

    First
    Second
    Second
    Second
    Second
    First
    Second

说明/提示

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页