站外题求解,玄关
查看原帖
站外题求解,玄关
1220211
safdasdfsadfsdaf楼主2025/1/23 14:18

奶牛排队

描述

农夫fj有 N(1<=N<=100)N (1 <= N <= 100) 条编号为1..N的奶牛按照数组 A(i)A(i) 站成一排,但是为了拍照需要要把这些奶牛按照所谓的循环圆进行调整为数组B(i)排队。 例如,奶牛们初始是按照 A=51423A = 5 1 4 2 3 排队,为了拍照最后要调整为 B=25314B = 2 5 3 1 4,调整的方法是,具体循环圆如下:在初始A数组奶牛5是排在第一位的,在B数组是排在第2,那么奶牛5就调到A数组的第2个位置取代奶牛1,奶牛1在B数组时排在第4个位置,那么奶牛1就调到A数组第4个位置取代奶牛2,奶牛2在B数组排在第1个位置,那么奶牛2就调到A数组第1个位置,因为第1个位置是奶牛5的起始位置,那么这个循环圆调整结束,这个循环圆由5、1、2组成而且他们都最终到达了最终位置。

剩下由奶牛4开始,因为奶牛4在B数组排在第5个位置,那么奶牛4在A数组调到第5个取代奶牛3,奶牛3在B数组排在第3个位置,那么奶牛3在A数组调到第3个位置,这个位置刚好是奶牛4的起始位置,这样奶牛4、3也是一个循环圆。 通过这两个循环圆,奶牛从初始的A数组调整到最终的B数组位置。 输入 第一行:一个整数N 第2..N+1行:行i+1代表A[i]2..N+1行:行i+1代表A[i]2+N..1+2N2+N..1+2N 行:代表B[i]B[i] 输出 两个整数分开的整数,第一个代表有多少个循环圆,第二个代表最长循环圆的长度。如果一个循环圆都不需要做,第二个数输出1-1

输入/输出例子

输入:

5 5 1 4 2 3 2 5 3 1 4

输出:

2 3

样例解释

  • [ ] 有两个循环圆分别是:512345、1、2和3、4。
2025/1/23 14:18
加载中...