#P12810. 信赖跃迁:置换轨迹计算
信赖跃迁:置换轨迹计算
信赖跃迁:置换轨迹计算
Problem Description
在这个世界里,信赖决定了一个人能否成为英雄,每个人的信赖值会被记录在手腕上的表盘上,反映个人的能力和影响力。 潇月卿,原本只是一位普通的生活博主,拥有平凡但充实的日常。随着她在网络上的影响力不断增加,越来越多的人愿意将自己的信赖交给她。她的信赖值急剧上升,最终获得了强大的空间转移能力。她能够瞬间穿越不同的时空,带领她的粉丝探索世界的奇迹与未知。然而,信赖值并非一成不变,它随着人们的情感波动和需求不断变化。潇月卿的力量,也因此变得不稳定。 某次跃迁中,潇月卿遭遇了跃迁引擎故障,时空通道发生了断裂。为了恢复通道的稳定性,她需要解决一个复杂的置换问题。这不仅与信赖值的变化有关,还涉及到空间跃迁的多项式运算。潇月卿必须通过一系列置换和幂次运算,来计算通向目标置换 的跃迁路径,并验证所有可能性,以修复时空裂缝。 作为这场时空冒险的关键,潇月卿需要你的帮助。给定一个长度为 的置换 和一个长度为 的整数序列 ,你需要计算有多少个长度为 的置换序列 能够满足以下关系:
$$p_0 \circ p_1^{k_1} \circ p_2^{k_2} \circ \ldots \circ p_m^{k_m} = q $$其中, 表示置换的复合运算, 表示一个长度为 的置换。 这一问题的解答,将直接决定时空通道是否能够恢复,潇月卿的英雄之路是否能继续。在这场充满未知与挑战的时空冒险中,能否成功跨越这道难题,就交给你了。
Input
第一行包含一个整数 (),表示数据组数,每组数据输入如下: 第一行包含两个整数 ()和 (),表示置换 的长度和序列 的长度。 第二行包含 个整数 ,表示置换 。保证 是一个有效的置换,即每个元素都不重复且在 之间。 第三行包含 个整数 (),表示序列 。
Output
对于每组数据,输出一行一个整数,表示满足条件的置换序列 的个数。由于答案可能非常大,请输出答案对 取模的结果。
Sample Input
3
2 1
1 0
3
2 1
1 0
3
1 1
0
1
Sample Output
2
2
1
Hint
对于第一个样例,满足条件的两种 分别为 和 。 本节主要介绍相关数学背景。 置换是一种对序列进行的运算。一个长度为 的置换是一个 的排列 ,表示将原序列下标为 的元素替换成原序列下标为 的元素(下标从 开始)。例如,对原序列 进行置换运算 之后得到的序列为 。 对于两个置换 和 ,其复合运算 表示对置换 做置换 之后得到的结果。 置换的幂运算 ()表示为对置换 复合 次自己,即 $P^k = \underbrace{P \circ \ldots \circ P}_{k\text{ 个 }P}$。
Source
2025“钉耙编程”中国大学生算法设计暑期联赛(5)