SP12409 LCPC12H - Johnny at school

题目描述

Johnny 在学校度过了漫长的一天后,决定和朋友们玩一个叫做“点游戏”的小游戏。游戏规则如下:在一条水平线上有 $N$ 个点依次排列,每个点 $i$ 有一个半径为 $R[i]$。玩家可以从任意一个点开始移动,但只能移动到后续的点,并且该点的半径必须比前一个点的大。当他在点 $i$ 上停留时,会获得 $P[i]$ 分。要想赢得游戏,Johnny 需要经过最多数量的点;如果有多种路径可以通过相同数量的点,则他应该选择获得分数最高的路径;如果仍有多种选择,他应该选取字典序最大的路径(对于序列 $A=(a_1, a_2, \dots, a_n)$ 和 $B=(b_1, b_2, \dots, b_n)$ 若第一个不相等的元素满足 $a_x > b_x$,则 $A$ 的字典序大于 $B$)。Johnny 是个聪明的孩子,他想要达到最佳结果,所以他请求你的帮助,看看最优的路径应该如何走。你能帮他赢得游戏吗?

输入格式

首先输入一个整数 $T$ 表示测试用例的数量。每个测试用例第一行是一个整数 $N$(表示点的数量)。接下来有 $N$ 行,每行包含两个整数 $R[i]$ 和 $P[i]$,分别表示第 $i$ 个点的半径和停留在该点可获得的分数。

输出格式

对于每个测试用例,输出应以结果序号 $K$(从 1 开始)开头,后跟句号和一个空格,然后按访问顺序打印 Johnny 走过的点的索引(基于 1 的索引)。相同数量点、相同分数时,输出字典序最大的子序列。

说明/提示

- $1 \le T \le 10$ - $1 \le N \le 1500$ - 每个点的半径 $1 \le R[i] \le 300$ - 停留在每个点可获得的积分 $1 \le P[i] \le 2,000,000$ ### 示例 #### 输入 ``` 2 6 1 3 2 3 6 3 4 20 3 15 9 10 6 1 3 1 3 6 3 4 20 3 15 9 10 ``` #### 输出 ``` 1. 1 2 4 6 2. 2 4 6 ``` 这个例子中,我们可以看到在第一组输入数据中,通过点 1、2、4 和 6 是最优策略,而在第二组数据中,选择点 2、4 和 6 会是最佳选择。 **本翻译由 AI 自动生成**