题目名称 3707. [CF1690F]Shifting String
输入输出 shifting.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 10
题目来源 Gravataryrtiop 于2022-07-06加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:0, 提交:0, 通过率:0%
关于 Shifting String 的近10条评论(全部评论)

3707. [CF1690F]Shifting String

★★   输入文件:shifting.in   输出文件:shifting.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

给定一长为 $n$ 的字符串 $s$(下标从 $1$ 开始) 与 $1\sim n$ 的排列 $p$。

定义 $s^0=s,s^k_i=s^{k-1}_{p_i}$。

求最小的 $k\gt 0$ 使 $s^k=s$。$t$ 组数据。

【输入格式】

第一行一个数字 $t$ 表示数据组数。

每组数据中,第一行一个整数 $n$。

第二行,一个字符串 $s$。

第三行,一个长为 $n$ 的序列 $p$,保证 $p$ 是 $n$ 的一个排列。

【输出格式】

$t$ 行,第 $i$ 行为第 $i$ 组数据的答案,即最小的 $k$。

【样例输入】

3
5
ababa
3 4 5 2 1
5
ababa
2 1 4 5 3
10
codeforces
8 6 1 7 5 2 9 3 10 4

【样例输出】

1
6
12

【样例说明】

在此键入。

【数据规模与约定】

对于 20% 的数据,保证 $1 \le t \le 10,1 \le n \le 10$。

另有 10% 的数据,保证 $\forall i \in [1,n],p_i = i$。

对于 100% 的数据,保证 $1 \le t \le 5000,1 \le n \le 200$。

保证答案在 C++ long long 范围内。

【来源】

CF1690F