AT_tkppc3_h.新入生歓迎数列 - Hard

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

配点:10001000 分

パ研的新生 PAKEN 君从 E869120 那里得到了一个长度为 NN 的数列 P={P1,P2,P3,…,PN}P = \{P_1, P_2, P_3, \ldots, P_N\}。最开始,PP 的所有元素均为 00。

PAKEN 君打算通过对数列 PP 进行如下操作,操作顺序任意,总共不超过 550 000550\,000 次,将该数列变为 A={A1,A2,A3,…,AN}A = \{A_1, A_2, A_3, \ldots, A_N\}。

  • 操作 1:选择一个 11 到 NN 之间的整数 xx,将 PxP_x 的值变为 11。
  • 操作 2:选择 11 到 NN 之间的整数 y,zy, z,将 PzP_z 的值加到 PyP_y 上。此时 yy 可以等于 zz。此外,PyP_y 的值不能超过 101810^{18}。

PAKEN 君还很年幼,不知道该如何操作。为了帮助他,你需要给出一种操作方案的示例。

输入格式

输入从标准输入读入,格式如下:

NN A1A_1 A2A_2 A3A_3 ... ANA_N

输出格式

输出到标准输出,格式如下:

QQ
(第 11 次操作的信息)
(第 22 次操作的信息)
...
(第 QQ 次操作的信息)

首先输出操作次数 QQ。**QQ 必须是 00 到 550 000550\,000 之间的整数。**接下来的 QQ 行,每行描述一次操作,格式如下:

(☆)执行操作 1 时:

11 xx

表示将 PxP_x 设为 11。

(★)执行操作 2 时:

22 yy zz

表示将 PzP_z 的值加到 PyP_y 上。

输入输出样例

  • 输入#1

    2
    1 4

    输出#1

    4
    1 1
    1 2
    2 2 2
    2 2 2
  • 输入#2

    3
    1 3 5

    输出#2

    8
    1 1
    2 1 1
    2 3 1
    1 1
    2 1 2
    2 2 1
    2 3 1
    1 1

说明/提示

限制条件

  • NN 是 22 到 200 000200\,000 之间的整数。
  • A1=1A_1 = 1。
  • AiA_i(1≤i≤N1 \leq i \leq N)是 11 到 230−12^{30} - 1 之间的整数。

子任务

子任务 1 [6060 分]

  • 满足 N=2N = 2。

子任务 2 [140140 分]

  • 满足 N≤8 000N \leq 8\,000。

子任务 3 [8080 分]

  • 满足 N≤16 000N \leq 16\,000。

子任务 4 [230230 分]

  • 满足 N≤25 000N \leq 25\,000。

子任务 5 [270270 分]

  • 满足 N≤160 000N \leq 160\,000。

子任务 6 [220220 分]

  • 无额外限制。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页