luogu#P9347. 似曾相识燕归来

    ID: 13321 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>洛谷原创Special JudgeO2优化排序构造洛谷月赛分类讨论

似曾相识燕归来

题目背景

春雨将过,忽而燕鸣轻唤,唤起春波荡漾。春波荡漾,漾起去年的回忆。回忆生香,香满檐下。檐下燕巢残旧,不禁落泪,抬头望归来之燕,心中一动,却是旧时相识……

题目描述

nn 只燕在夕阳中飞过。按从前到后的顺序,第 ii 只燕的大小为 pip_i,且 pp 是一个长度为 nn 的排列。

现在可以进行至多 LL如下操作:

  • 选定三个整数 i,j,ki,j,k 满足 1i<j<kn1\le i<j<k\le n,如果 pi>pkp_i>p_k,交换第 i,ji,j 只燕;否则交换第 j,kj,k 只燕。

为了使队形整齐,我们希望燕是从前到后升序排列的,即 1in\forall 1\le i\le n 都有 pi=ip_i=i

问是否可以达成目标。若可以,请构造一组符合要求的操作。

输入格式

本题有多组测试数据。

第一行一个整数 TT,表示测试数据组数。

对于每组测试数据:

  • 第一行两个整数 n,Ln,L
  • 第二行 nn 个整数 p1,p2,,pnp_1,p_2,\ldots,p_n

输出格式

对于每组测试数据:

  • 若无法用至多 LL 次操作使得 pp 升序排列,仅输出一行 -1
  • 否则第一行输出一个整数表示操作次数 xx,后 xx 行每行输出三个整数 i,j,ki,j,k 表示进行的操作。你需要保证 0xL0\le x\le L1i<j<kn1\le i<j<k\le n
1
4 4
4 2 1 3
2
1 3 4
2 3 4

提示

【提示】

一个长度为 nn 的排列是一个满足 11nn 中的所有正整数恰好出现 11 次的数组。例如,[3,1,2][3,1,2] 是一个长度为 33 的排列,而 [5,5,1,2,3][5,5,1,2,3] 不是一个排列。

【样例 1 解释】

  • 第一次操作中,i=1,j=3,k=4i=1,j=3,k=4,由于 p1>p4p_1>p_4,我们交换 p1,p3p_1,p_3,此时 p=[1,2,4,3]p=[1,2,4,3]
  • 第二次操作中,i=2,j=3,k=4i=2,j=3,k=4,由于 p2<p4p_2<p_4,我们交换 p3,p4p_3,p_4,此时 p=[1,2,3,4]p=[1,2,3,4]

【数据规模与约定】

本题采用捆绑测试。

  • Subtask 1(5 points):n3n\le 3
  • Subtask 2(5 points):n4n\le 4
  • Subtask 3(5 points):T50T\le 50n8n\le 8
  • Subtask 4(10 points):n8n\le 8
  • Subtask 5(25 points):L=n+2L=n+2
  • Subtask 6(25 points):L=n+1L=n+1
  • Subtask 7(25 points):无特殊限制。

对于 100%100\% 的数据,1T1051\le T\le 10^51n,n2×1061\le n,\sum n\le 2\times 10^6nLn+2n\le L\le n+2pp 为一个 1n1\sim n 的排列。