#L4116. 「联合省选 2024」最长待机

    ID: 5582 传统题 10000ms 1024MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>树结构博弈论动态规划搜索DFS

「联合省选 2024」最长待机

「联合省选 2024」最长待机

题目描述

精灵程序员小 ω\omega 和 小 \aleph 拥有无限的寿命,因此在写代码之余,它们经常玩一些对抗游戏来打发时间。尽管如此,时间还是太多,于是它们发明了一款专用于消磨时间的游戏:最长待机。

为了了解最长待机的规则,首先要了解精灵们使用的编程语言 Sleep++ 的规则:

程序由 nn 个函数组成,第 ii (1in1 \le i\le n) 个函数具有种类 eie_i 和子函数编号序列 Qi=(Qi,1,Qi,2,,Qi,li)Q_i = (Q_{i,1},Q_{i,2},\cdots,Q_{i,l_i})QiQ_i 可以为空,此时 lil_i00

nn 以及所有的 eie_iQiQ_i 可以由程序员任意给出,但它们需要满足以下所有条件:

  • n1n\ge 1
  • 1in\forall 1 \le i \le nei{0,1}e_i \in \{0, 1\}
  • 1in\forall 1 \le i \le nQiQ_i 中元素两两不同且均为 [i+1,n][i + 1, n] 中的整数;
  • 2jn\forall 2 \le j \le n,恰好有一个 QiQ_i (1in1 \le i \le n) 包含了 jj

调用函数 ii (1in1 \le i \le n) 时,按顺序执行如下操作:

  1. ei=0e_i = 0,令变量 rir_i11;否则程序员需要立即为 rir_i 输入一个正整数值。
  2. QiQ_i 为空,程序等待 rir_i 秒;否则重复以下操作 rir_i 次:
    • 按顺序调用编号为 Qi,1,Qi,2,,Qi,liQ_{i,1},Q_{i,2},\cdots,Q_{i,l_i} 的函数。

若一个种类为 11 的函数 jj 被调用多次,则其每次调用都需要输入 rjr_j

我们认为,在函数调用中,除了「等待 rr 秒」之外的操作不消耗任何时间,即函数调用、运行和输入都在瞬间完成。因此,一个时刻内程序员可能输入多个数。

可以证明,调用任意一个 Sleep++ 程序的任意一个函数,无论如何设定输入,消耗的时间总是有限的。

「最长待机」的游戏规则如下:

ω\omega 和 小 \aleph 准备好各自的 Sleep++ 程序并选择各自程序中的一个函数。它们互相知晓对方程序的结构以及选择的函数。

在时刻 00,小 ω\omega 和 小 \aleph 同时调用自己选择的函数,游戏开始。

在时刻 ttt0t \ge 0),双方可以看到对方在时刻 00(t1)(t - 1) 输入的所有数字,并相应调整自己在时刻 tt 输入的数字,但双方无法得知对方在时刻 tt 输入的数字。

函数调用先结束的一方输掉游戏,另一方胜利。两个调用同时结束算作平局。

ω\omega 和 小 \aleph 都是绝顶聪明的,在它们眼中,如果有一方存在必胜策略,那么这局游戏是不公平的。换言之,双方都不存在必胜策略的游戏是公平的。

ω\omega 写了一个 nn 个函数的 Sleep++ 程序并进行了 mm 次操作,操作有以下两种:

  • 操作一:给出 kk,将 eke_k 修改为 (1ek)(1 - e_k)
  • 操作二:给出 kk,与小 \aleph 玩一局「最长待机」,开始时小 ω\omega 会调用自己的函数 kk

\aleph 信奉极简主义,它希望对于每一局游戏设计出函数个数最少的程序,使得选择其中某个函数能让这局游戏是公平的。你能帮它求出最少所需的函数个数吗?

可以证明,小 \aleph 总是能设计一个程序并选择其中一个函数,使得游戏是公平的。

输入格式

从文件 sleep.in 中读入数据。

输入的第一行包含两个正整数 n,mn,m,表示小 ω\omega 的程序中函数的个数以及操作次数。

接下来 nn 行,第 ii 行若干个整数,描述小 ω\omega 程序中的函数 ii

  • 前两个整数 ei,lie_i, l_i 表示函数种类和子函数编号序列长度;
  • 接下来 lil_i 个整数 Qi,1,Qi,2,,Qi,liQ_{i,1},Q_{i,2},\cdots,Q_{i,l_i} 描述子函数编号序列。

接下来 mm 行,第 jj 行两个整数 oj,kjo_j, k_j 描述一次操作,其中 oj=1o_j = 1 表示操作一,oj=2o_j = 2 表示操作二。

输出格式

输出到文件 sleep.out 中。

对于每个操作二输出一行一个整数,表示小 \aleph 的程序中最少所需的函数个数。

样例 1

输入

3 6
0 2 2 3
0 0
0 0
2 1
1 3
2 1
1 3
1 2
2 1

输出

3
3
1

说明
对于前两次游戏,小 \aleph 可以给出与小 ω\omega 完全一致的程序并在游戏开始时调用函数 11。可以证明不存在函数个数更少的方案。

对于第三次游戏,小 \aleph 可以给出一个仅包含一个种类为 11 的函数的程序,并在游戏开始时调用函数 11

在时刻 00,小 ω\omega 输入其程序中的 r2r_2,小 \aleph 输入其程序中的 r1r_1

注意:rr 变量在小 ω\omega 和小 \aleph 的程序之间是独立的,不会互相影响。

输入完成后,小 ω\omega 的程序在时刻 (r2+1)(r_2 +1) 结束,小 \aleph 的程序在时刻 r1r_1 结束。

由于两人在时刻 00 互不知道对方的决策,不能保证 (r2+1)(r_2 + 1)r1r_1 的大小关系,故双方均不存在必胜策略,这局游戏是公平的。

样例 2

该组数据满足特殊性质 AD。

样例 3

该组数据满足特殊性质 BD。

样例 4

该组数据满足特殊性质 D。

样例 5

该组数据满足特殊性质 C。

子任务

对于所有测试数据,

  • 1n5×1051 \le n \le 5\times 10^51m2×1051 \le m \le 2\times 10^5
  • 1in\forall 1 \le i \le nei{0,1}e_i\in \{0, 1\}0li<n0 \le l_i <n
  • 1in,1jli\forall 1 \le i \le n,1 \le j \le l_ii<Qi,jni < Q_{i,j} \le n
  • 1in,1p<qli\forall 1 \le i \le n, 1 \le p < q \le l_iQi,pQi,qQ_{i,p}\neq Q_{i,q}
  • 2jn\forall 2 \le j \le n,恰好有一个 QiQ_i (1in1 \le i \le n) 包含了 jj
  • 1jm\forall 1 \le j \le m1oj21 \le o_j \le 21kjn1 \le k_j \le n
测试点编号 nn \le mm\le 特殊性质
1$\sim$2 3 24
3 80 400 AD
4 BD
5$\sim$6 D
7 3×1053\times 10^5 10510^5 AD
8 BD
9$\sim$10 D
11 A
12 BC
13 B
14$\sim$15 C
16$\sim$17
18$\sim$19 5×1055\times 10^5 2×1052\times 10^5 A
20 BC
21 B
22$\sim$23 C
24$\sim$25

特殊性质说明:

  • 特殊性质 A:保证任意时刻 e1e_1 均为 002in\forall 2\le i \le nli1l_i \le 1;操作二的 kk 均为 11
  • 特殊性质 B:保证操作二的 kk 满足当时的 eke_k11
  • 特殊性质 C:保证 2in\forall 2\le i \le niQi2i \in Q_{\lfloor \frac{i}{2}\rfloor}1in\forall 1 \le i \le n,序列 QiQ_i 单调递增。
  • 特殊性质 D:保证操作二不超过 1010 个;操作二的 kk 均为 11