已结束 CSP-J 2024(官方数据)
← 上一题 下一题 →

A4637 | [CSP-J 2024] 接龙

来源CSP-J / 2024
时间限制2s
内存限制512MB
通过 / 提交0/0

题目描述

[CSP-J 2024] 接龙



题目描述



在玩惯了成语接龙之后,小 J 和他的朋友们发明了一个新的接龙规则。

总共有 $n$ 个人参与这个接龙游戏,第 $i$ 个人会获得一个整数序列 $S_i$ 作为他的词库。

一次游戏分为若干轮,每一轮规则如下:

- $n$ 个人中的某个人 $p$ 带着他的词库 $S_p$ 进行接龙。若这不是游戏的第一轮,那么这一轮进行接龙的人不能与上一轮相同,但可以与上上轮或更往前的轮相同。
- 接龙的人选择一个长度在 $[2, k]$ 的 $S_p$ 的连续子序列 $A$ 作为这一轮的接龙序列,其中 $k$ 是给定的常数。若这是游戏的第一轮,那么 $A$ 需要以元素 $1$ 开头,否则 $A$ 需要以上一轮的接龙序列的最后一个元素开头。
- 序列 $A$ 是序列 $S$ 的连续子序列当且仅当可以通过删除 $S$ 的开头和结尾的若干元素(可以不删除)得到 $A$。

为了强调合作,小 J 给了 $n$ 个参与游戏的人 $q$ 个任务,第 $j$ 个任务需要这 $n$ 个人进行一次游戏,在这次游戏里进行恰好 $r_j$ 轮接龙,且最后一轮的接龙序列的最后一个元素恰好为 $c_j$。为了保证任务的可行性,小 J 请来你判断这 $q$ 个任务是否可以完成的,即是否存在一个可能的游戏过程满足任务条件。

输入格式

本题有多组测试数据。

输入的第一行包含一个正整数 $T$,表示数据组数。

接下来包含 $T$ 组数据,每组数据的格式如下:

第一行包含三个整数 $n, k, q$,分别表示参与游戏的人数、接龙序列长度上限以及任务个数。

接下来 $n$ 行:

第 $i$ 行包含 $(l_i + 1)$ 个整数 $l_i, S_{i,1}, S_{i,2}, \dots , S_{i,l_i}$,其中第一个整数 $l_i$ 表示序列 $S_i$ 的长度,接下来 $l_i$ 个整数描述序列 $S_i$。

接下来 $q$ 行:

第 $j$ 行包含两个整数 $r_j, c_j$,描述一个任务。

输出格式

对于每个任务:输出一行包含一个整数,若任务可以完成输出 1,否则输出 0。

输入输出样例

输入 #1
1
3 3 7
5 1 2 3 4 1
3 1 2 5
3 5 1 6
1 2
1 4
2 4
3 4
6 6
1 1
7 7
输出 #1
1
0
1
0
1
0
0
输入 #2
见选手目录下的 chain/chain2.in 与 chain/chain2.ans。
该样例满足测试点 1 的特殊性质。
输出 #2

                            
输入 #3
见选手目录下的 chain/chain3.in 与 chain/chain3.ans。
该样例满足测试点 2 的特殊性质。
输出 #3

                            
输入 #4
见选手目录下的 chain/chain4.in 与 chain/chain4.ans。
该样例满足特殊性质 A,其中前两组测试数据满足 n ≤ 1000、r ≤ 10、单组测试数据内所有词库的长度和 ≤ 2000、q ≤ 1000。
输出 #4

                            
输入 #5
见选手目录下的 chain/chain5.in 与 chain/chain5.ans。
该样例满足特殊性质 B,其中前两组测试数据满足 n ≤ 1000、r ≤ 10、单组测试数据内所有词库的长度和 ≤ 2000、q ≤ 1000。
输出 #5

                            
输入 #6
见选手目录下的 chain/chain6.in 与 chain/chain6.ans。
该样例满足特殊性质 C,其中前两组测试数据满足 n ≤ 1000、r ≤ 10、单组测试数据内所有词库的长度和 ≤ 2000、q ≤ 1000。
输出 #6

                            
C++ 编辑器
输入
输出