在玩惯了成语接龙之后,小 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$ 个任务是否可以完成的,即是否存在一个可能的游戏过程满足任务条件。

提交代码 C++
🔒
请先登录
登录后即可提交代码