#P16534. [THUPC 2026 决赛] 年鉴整理
[THUPC 2026 决赛] 年鉴整理
题目背景
来自 2026 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2026)决赛。
题解等资源可在 https://github.com/dapingguo8/THUPC2026-final 查看。
茶话会临近尾声,作为庆典十周年专属的怀旧环节,小 T 特意找出了历届 THUPC 的珍贵档案---一排记录了十年点滴的赛事年鉴,供大家传阅。
翻阅过后,两人准备将年鉴放回书架。由于岁月流逝,年鉴的破损程度参差不齐。心思细腻的小 S 提议,在放回时将它们按破损程度严格递增重新排序,以此直观地展现时间沉淀的痕迹。然而,年鉴的纸张已经十分脆弱,每次只能极其小心地将其中的一本向前平移一位,且这无可避免地会略微增加该年鉴的破损度。更棘手的是,留给他们的整理时间十分有限。小 S 想知道,能否在有限的操作次数内,将这些年鉴放回书架并整理得井然有序呢?
题目描述
书架上摆放着 本年鉴。初始时,第 本年鉴的破损度为 。
每次移动时,首先需要选择一个位置 ,然后将第 本年鉴向前移动至第 本年鉴前,移动后它的破损度将会增加 。
由于时间有限,总共只能进行不超过 次移动。作为众多翻阅年鉴的参与者之一,你需要帮助小 S 规划出一组具体的移动方案,使得最终书架上的年鉴破损度从左到右严格递增。
输入格式
每个测试点中包含多组测试数据。输入的第一行包含一个正整数 ,表示数据组数。对于每组测试数据:
- 第一行包含一个正整数 ,表示年鉴的数量。
- 第二行包含 个正整数 ,分别表示初始时每一本年鉴的破损度
输出格式
对于每组测试数据,若存在可行的移动方案:
- 第一行输出一个非负整数 ,表示移动次数。
- 第二行输出 个正整数 ,分别表示每次移动选定的位置。
若无法使得最终书架上的年鉴破损度从左到右严格递增,则仅输出一行一个整数 。
3
2
1 2
2
2 1
3
4 5 1
0
-1
2
2 1
提示
- 对于第一组测试数据,序列 已为严格增序列。
- 对于第二组测试数据,无法在规定步数内将序列 变为严格增序列。
- 对于第三组测试数据,首先选择下标 ,将序列变为 ;随后选择下标 ,将序列变为 。