CF1342F Make It Ascending

题目描述

给定一个包含 $n$ 个元素的数组 $a$。你可以对其进行若干次(也可以为零次)操作。 每次操作时,你选择两个下标 $i$ 和 $j$($1 \le i, j \le n$,且 $i \ne j$),将 $a_i$ 加到 $a_j$ 上,然后从数组中移除第 $i$ 个元素(此后所有右侧元素的下标减 $1$,$n$ 也减 $1$)。 你的目标是使数组 $a$ 严格递增。即最终数组满足 $a_1 < a_2 < \dots < a_n$(其中 $n$ 为操作后数组的长度)。 请计算使数组严格递增所需的最少操作次数。

输入格式

第一行包含一个整数 $T$($1 \le T \le 10000$),表示测试用例的数量。 每个测试用例包含两行。第一行包含一个整数 $n$($1 \le n \le 15$),表示初始数组 $a$ 的元素个数。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^6$)。 保证: - 满足 $n \ge 5$ 的测试用例不超过 $5000$ 个; - 满足 $n \ge 8$ 的测试用例不超过 $500$ 个; - 满足 $n \ge 10$ 的测试用例不超过 $100$ 个; - 满足 $n \ge 11$ 的测试用例不超过 $50$ 个; - 满足 $n \ge 12$ 的测试用例不超过 $25$ 个; - 满足 $n \ge 13$ 的测试用例不超过 $10$ 个; - 满足 $n \ge 14$ 的测试用例不超过 $3$ 个; - 满足 $n \ge 15$ 的测试用例不超过 $1$ 个。

输出格式

对于每个测试用例,输出如下内容: 第一行输出一个整数 $k$,表示你需要执行的最少操作次数。接下来输出 $k$ 行,每行包含两个整数 $i$ 和 $j$,表示对应操作选择的下标。注意,每次移除元素后,数组下标会发生变化。若存在多种最优操作方案,输出任意一种即可。

说明/提示

在第一个测试用例中,操作过程如下: $[2, 1, 3, 5, 1, 2, 4, 5] \rightarrow [2, 1, 3, 5, 1, 4, 7] \rightarrow [1, 3, 5, 1, 6, 7] \rightarrow [2, 3, 5, 6, 7]$。 由 ChatGPT 4.1 翻译