CF2034D.Darius' Wisdom
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
大流士一世正在建造 $ n $ 根石柱,每根石柱由一个底座和不超过两个铭文块构成。
在每次操作中,大流士可以选择两根石柱 $ u $ 和 $ v $,只要这两根石柱的铭文数量差恰好为 $ 1 $,就可以将一个铭文从较多的一根转移到较少的一根。可以保证至少有一根石柱含有正好 $ 1 $ 个铭文。
为使得石柱看起来更美观,大流士希望这些石柱的铭文数量按不减顺序排列。为了减少工人们的辛劳,他希望你制定一个操作序列,最多使用 $ n $ 次操作实现这一目标,不需要优化操作次数。
输入格式
第一行是一个整数 $ t ,表示测试用例的数量。( 1 \leq t \leq 3000 $)
接下来每个测试用例的第一行包含一个整数 $ n ,表示石柱数目。( 1 \leq n \leq 2 \cdot 10^5 $)
第二行有 $ n $ 个整数 $ a_1, a_2, \ldots, a_n $,其中 $ a_i \in {0,1,2} $ 表示第 $ i $ 根石柱最开始的铭文数。保证至少有一根石柱有且只有一个铭文。
在所有测试用例中,$ n $ 的总和不超过 $ 2 \cdot 10^5 $。
输出格式
对每个测试用例,首先输出一个整数 $ k ,表示用于排序石柱的操作次数。( 0 \leq k \leq n $)
接着输出 $ k $ 行,每行包含两个整数 $ u_i $ 和 $ v_i $,表示第 $ i $ 次操作中转移铭文的两个石柱索引,要求转移时 $ |a_{u_i} - a_{v_i}| = 1 $。
可以证明,在这些限制下,总能找到一个可行的解。
输入输出样例
输入#1
3 4 0 2 0 1 3 1 2 0 6 0 1 1 2 2 2
输出#1
2 2 4 2 3 2 3 1 2 3 0
说明/提示
以下是几个测试用例的样例状态:
-
第一个测试用例:
- 初始状态:$ 0, 2, 0, 1 $
- 第一次操作后:$ 0, 1, 0, 2 $
- 第二次操作后:$ 0, 0, 1, 2 $
-
第二个测试用例:
- 初始状态:$ 1, 2, 0 $
- 第一次操作后:$ 0, 2, 1 $
- 第二次操作后:$ 0, 1, 2 $
-
在第三个测试用例中,石柱的铭文数量已经是按升序排列的。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?