P1034五轮启幽扉lock

时间限制 1000 ms内存限制 512 MiB通过率 —
显示算法标签枚举 · 模拟

【题目背景】

特西荼亚海上的落日异象与金白鱼群迁徙接连指向同一片海域。为了查明这些异常的源头,并确认它们是否会威胁航路与沿海聚落,Ehundategh 带领 Gioush 大队进入沉没遗迹,一路抵达最深处已经开启的古门。门后的光只照亮了一座仍在运转的五环控制台,若不能从残留记录中恢复它认可的密钥,通向遗迹内层的道路便不会真正显现。

【题目描述】

控制台上依次排列着 55 个刻有数字的转轮,每个转轮上的数字均为 090\sim 9。转轮首尾相接,将数字 99 向前转动一格会得到 00,将数字 00 向后转动一格会得到 99

控制台原本具有一个由 55 个数字组成的原始密钥。每次验证时,控制台都会从原始密钥开始进行恰好一次试拨。一次试拨必须满足以下两种方式之一:

  • 选择一个转轮,将它转动 191\sim 9 格。
  • 选择两个相邻的转轮,将它们沿相同方向转动相同的 191\sim 9 格。

例如,可以通过一次试拨将状态 0,0,1,1,50,0,1,1,5 变为 1,1,1,1,51,1,1,1,5,但不能变为 1,2,1,1,51,2,1,1,5

控制台中留下了 nn 个验证后的状态,并保证这些状态均不等于原始密钥。对于一种可能的原始密钥,如果从它开始进行一次试拨,能够分别得到给出的全部 nn 个状态,那么这种原始密钥便与现有记录相符。

请你求出与全部记录相符的原始密钥数量。

【输入格式】

从文件 lock.in\textbf{\textit{lock.in}} 中读入数据。

本题包含多组测试数据。

输入的第一行包含两个非负整数 c,Tc,T,分别表示测试点编号与测试数据的组数。c=0c=0 表示该测试点为样例。

对于每组测试数据:

第一行包含一个正整数 nn,表示控制台留下的状态数量。

接下来 nn 行,每行包含 55 个整数,依次表示一个状态中五个转轮上的数字。

【输出格式】

输出到文件 lock.out\textbf{\textit{lock.out}} 中。

对于每组测试数据输出一行一个整数,表示与全部记录相符的原始密钥数量。

【样例 1 输入】

0 310 0 1 1 520 0 1 1 51 1 1 1 532 2 3 4 51 3 4 4 51 2 3 6 5

【样例 1 输出】

81101

【说明/提示】

【样例 1 解释】

对于第一组测试数据,可以只转动一个转轮,共有 5×9=455\times 9=45原始密钥,也可以同时转动两个相邻转轮,共有 4×9=364\times 9=36原始密钥,因此答案为 8181

【样例 2】

见选手目录下的 lock/lock2.in\textbf{\textit{lock/lock2.in}}lock/lock2.ans\textbf{\textit{lock/lock2.ans}}

该组样例符合测试点 151\sim 5 的数据范围。

【样例 3】

见选手目录下的 lock/lock3.in\textbf{\textit{lock/lock3.in}}lock/lock3.ans\textbf{\textit{lock/lock3.ans}}

该组样例符合测试点 162016\sim 20 的数据范围。

【数据范围】

对于 100%100\% 的数据,保证 1T201\leq T\leq 201n81\leq n\leq 8,所有转轮上的数字均在 090\sim 9 之间。

测试点编号TTnn特殊性质
151\sim 520\leq 203n83\leq n\leq 8A
6106\sim 1020\leq 203n83\leq n\leq 8B
111511\sim 1520\leq 203n83\leq n\leq 8C
162016\sim 2020\leq 208\leq 8

特殊性质 A:保证同一组测试数据中给出的状态两两不同,并且存在一个固定的转轮,使得其他 44 个转轮上的数字在所有状态中分别相同。

特殊性质 B:保证同一组测试数据中给出的状态两两不同,并且存在两个固定的相邻转轮,使得其他 33 个转轮上的数字在所有状态中分别相同。从任意一个状态变为另一个状态时,这两个相邻转轮都需要沿相同方向转动相同格数。

特殊性质 C:保证每组测试数据满足特殊性质 A 或特殊性质 B。

【题解】

已公开 1 篇题解,官方题解会优先显示。

查看题解