AT_rcl_contest_2021_a 魔法使いXの戦い

题目描述

魔法使 X 正处于与一个怪物群的对峙中。这些怪物共有 $N$ 只,它们整齐地排成一排。每只怪物都有一个特定的**强度**,从左到右,第 $i$ 只怪物的**强度**用 $A_i$ 表示。 魔法使 X 只会使用一种魔法,即「强化术」。这个魔法能增加一只怪物的**强度**,具体是通过增加另一只怪物的**强度**来实现的。施法的具体步骤如下: 1. 选择一只你想要增强的怪物,定义它的位置为 $p$。 2. 再选择任意一只怪物,定义它的位置为 $q$,可以允许 $p = q$。 3. 通过施法后,第 $p$ 只怪物的**强度**将变为 $A_{p} = (A_{p} + A_{q}) \ \% \ K$。这里,$\% \ K$ 表示对 $K$ 取余操作。注意,$K$ 是**强度**的上限值,当**强度**超过或等于 $K$ 时,会发生溢出。 魔法使 X 可以最多施展 $M$ 次「强化术」。 你的目标是通过合理地选择施法对象,让所有怪物在施法后的**强度**尽可能小,以便对战斗更有利。 每个测试用例的得分与整体问题的得分计算方式如下: - 对于单个测试用例,得分按照以下公式计算: \[ score = \text{ceil}\left(\sum_{i} (\log_{2}K - \log_{2}(A_{i} + 1))\right) \] 当施法结束后,如果所有非零的 $A_i$ 的值不超过一个,还需加上 $M - (实际施法次数)$ 的值。 - 总共有 50 个测试用例,所有测试用例得分之和即为本题的总得分。

输入格式

输入格式如下: ``` N M K A_0 ... A_{N-1} ``` - $N$ 是怪物的数量,满足 $N = 300$。 - $M$ 是魔法使 X 的施法次数上限,满足 $M = 1000$。 - $K$ 是**强度**的限制值,满足 $K = 10^8$。 - $A_i$ 是第 $i$ 个怪物的**强度**,满足 $0 < A_i < K$。

输出格式

输出最多 $M$ 行,每行包含两个用空格隔开的整数。 ``` p_0 q_0 ... ``` - $p_i$ 是第 $i$ 次「强化」中选择的怪物的位置,需满足 $0 \le p_i \le N - 1$。 - $q_i$ 是第 $i$ 次「强化」中另外选择的怪物的位置,需满足 $0 \le q_i \le N - 1$。 - $p_i$ 可以等于 $q_i$。

说明/提示

每个测试用例都是由测试用例生成器随机生成的。生成器、样例输入数据及可视化工具可通过指定链接下载。 注意,可视化工具只是用于帮助理解和分析结果,它无法替代在 AtCoder 上正式提交考试中的评分。如果使用该工具所受到的任何损失不予负责,请用户自行承担风险。 关于工具的使用方法,请参见下载包中的 README.html 文件。 ### 示例说明 示例用于帮助理解题意,并不完全符合输入约束条件($N = 300$,$M = 1000$,$K = 10^8$)。 **本翻译由 AI 自动生成**