luogu#P8381. [PFOI Round1] Two Subsegments

    ID: 12374 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>洛谷原创Special JudgeO2优化构造洛谷月赛

[PFOI Round1] Two Subsegments

题目背景

洛谷知名网红,€€£官方团队团主 €€£ 同志,因联合省选寄,医院抢救无效,于 4 月 17 日 g 了。

€€£ 是知名洛谷人,2021年加入洛谷,同年成立 €€£ 官方团队。在他在位期间勤勤恳恳,认真整活,发奋出题,为整活革命化、现代化、正规化建设作出了贡献。

对于 €€£ 的退役,Uvocde 深感悲痛。这时,他想起了 €€£ 对构造的深爱,于是便出了这道题来缅怀 €€£

题目描述

TT 组询问,每组询问给出一个长为 nn 的序列 aa,保证 aa1n1\sim n 的排列。

你可以选择一个数 xx,然后你每次可以将一段长为 x+1x+1 或一段长为 x1x-1 的序列在原序列中前移或后移 xx 位,将经过的部分移到空出来的地方。

请在 80×n80\times n 次内将 aa 排成升序。

输入格式

第一行一个正整数 TT

接下来 2×T2 \times T 行,每两行代表一组询问。

对于每组询问,格式为:先一行一个正整数 nn,接下来一行 nn 个正整数,代表 a1,,ana_1,\ldots,a_n

输出格式

输出共 TT 组。

一组询问如果无解,仅输出一个 1-1

如果有解,则输出共 m+2m+2 行:

前两行每行一个数,分别是 x,mx,m,其中 mm 表示操作次数,xx 如题意。

接下来 mm 行,每行三个数,第一个数表示方向(向左是 00,向右是 11),接下来两个数 l,rl,r 代表平移区间的左、右端点。

你的方案需要保证:

  • 2xn2\leq x\leq n0m80n0\leq m\leq 80n
  • 对每一次操作,有:
    • 1lrn1\leq l\leq r\leq n
    • rl+1=x1r-l+1=x-1rl+1=x+1r-l+1=x+1
    • 右移时 rnxr\leq n-x,左移时 lx+1l\geq x+1

本题采用 SPJ\text{SPJ},只要调换操作正确或正确判断无解即可给分。

2
7
2 1 4 7 6 5 3
2
2 1
3
4
1 1 4
1 2 3
1 1 2
0 5 6
-1

提示

【样例解释】

对于 2 1 4 7 6 5 32\ 1\ 4\ 7\ 6\ 5\ 3 这组样例:

xx33,共进行 44 次操作:

  1. 2 1 4 7 6 5 3,向右平移;
  2. 6 5 3 2 1 4 7,向右平移;
  3. 6 2 1 4 5 3 7,向右平移;
  4. 1 4 5 6 2 3 7,向左平移;
  5. 1 2 3 4 5 6 7,排序完成。

【数据范围】

对于 100%100\% 的数据,1T104, 2n104, n1041\le T\le10^4,\ 2\le n\le 10^4,\ \sum n\le10^4保证排列在所有排列中等概率随机

Subtasks\text{Subtasks} 测试点数 数据范围 分值
Subtask0\text{Subtask0} 11 n5n\leq 5 2pts\text{2pts}
Subtask1\text{Subtask1} 77 n50n\leq 50 7pts\text{7pts}
Subtask2\text{Subtask2} 99 n103n\leq 10^3 27pts\text{27pts}
Subtask3\text{Subtask3} 1414 n5×103n\leq 5\times 10^3
Subtask4\text{Subtask4} 99 n104n\leq 10^4 37pts\text{37pts}