题目求助
  • 板块题目总版
  • 楼主YangQiMan
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/7 09:30
  • 上次更新2024/10/7 10:56:46
查看原帖
题目求助
1379896
YangQiMan楼主2024/10/7 09:30

求助 有一个排列 ? p,现在小 ? L可以不断地交换排列中的两个数,小 ? L想让这个排列变成一个单位排列,但他不会求最少的操作次数,你可以帮帮他吗? ​ 注意:单位排列指对于任意的 ? ( 1 ≤ ? ≤ ? ) i(1≤i≤n),满足 ? ? = ? p i ​ =i的排列。 【输入格式】 ​ 输入文件名为permutation.in。 ​ 第一行一个正整数 ? T,表示测试点数目。 ​ 对于每一个测试点,第一行一个数 ? n,表示排列长度。 ​ 接下来一行 ? n个数 ? ? p i ​ ,表示排列。 输入文件名为permutation.in。 ​ 第一行一个正整数 ? T,表示测试点数目。 ​ 对于每一个测试点,第一行一个数 ? n,表示排列长度。 ​ 接下来一行 ? n个数 ? ? p i ​ ,表示排列。 【输出格式】 ​ 输出文件名为permutation.out。 ​ 对于每一个测试点,输出一行一个数,表示最少的交换次数。 输入数据 1 1 5 3 4 2 5 1 输出数据 1 4 【样例解释】 ​ 一种可行的交换 4 4次的方案为: ​ 3 4 2 5 1 → 1 4 2 5 3 → 1 2 4 5 3 → 1 2 3 5 4 → 1 2 3 4 5 3 4 2 5 1→1 4 2 5 3→1 2 4 5 3→1 2 3 5 4→1 2 3 4 5 【样例2】 ​ 见下发文件。 【数据范围】 ​ 对于 50 % 50%的数据,满足 ? ≤ 5 n≤5。 ​ 对于 80 % 80% 的数据,满足 ? ≤ 1000 n≤1000。 ​ 对于 100 % 100% 的数据,满足 1 ≤ ? ≤ 100000 , 1 ≤ ? ≤ 5 1≤n≤100000,1≤T≤5。

2024/10/7 09:30
加载中...