P15141 [SWERC 2025] Git Gud

题目描述

你是一名冒险家,为未来主义公司 RoboCorp 工作。你的初始技能等级是一个在 $[1, n]$ 范围内的整数,但你不知道其确切值。你的目标是通过为 RoboCorp 完成任务,使技能等级至少达到 $n$,但每个任务都需要花费宝贵的机器人币。 你可以选择任意难度和任意正整数的持续时间(以小时计)的任务。然而,成本取决于新任务的长度,以及新任务的难度与你最近一次任务难度的比较。 设 $x$ 为你最近一次任务的难度。如果你想要承担一个难度为 $y$、持续时间为 $l$ 的新任务: - 如果这是你的第一个任务,或者 $y \le x$,则成本为 $l$ 机器人币。 - 如果 $y > x$,则成本为 $1000 + l$ 机器人币。 你的技能只有在承担的任务难度 $y$ 恰好等于你当前技能 $s$ 时才会提升: - 如果 $y = s$,则你的技能增加 $l$。 - 否则,你的技能不变。 每次任务后,你仍然不知道自己的实际技能值。 你初始拥有 $10^6$ 机器人币。请找到一个策略(一系列任务),保证不超过预算,并且无论你的初始技能是什么,都能使你的技能至少达到 $n$。

输入格式

输入包含一行一个整数 $n$($1 \le n \le 250000$)—— 目标技能等级(即最终你的技能必须大于或等于 $n$)。

输出格式

第一行输出一个整数 $k$($0 \le k \le 10^6$)—— 你计划完成的任务数量。 接下来输出 $k$ 行。第 $i$ 行必须包含两个整数 $y$ 和 $l$($1 \le y, l \le 10^6$)—— 分别表示第 $i$ 个任务的难度和持续时间(以小时计)。

说明/提示

#### 样例解释 在此样例中,你的目标技能是 $n = 4$。你可以使用以下策略: - 承担一个难度 $y = 1$、持续时间 $l = 4$ 的任务。这是你的第一个任务,因此支付 $l = 4$ 机器人币。 - 承担一个难度 $y = 3$、持续时间 $l = 1$ 的任务。前一个任务难度为 $x = 1$,由于 $y > x$,你支付 $l + 1000 = 1001$ 机器人币。 - 承担一个难度 $y = 2$、持续时间 $l = 1$ 的任务。现在 $x = 3$,由于 $y \le x$,你支付 $l = 1$ 机器人币。 - 承担一个难度 $y = 3$、持续时间 $l = 1$ 的任务。现在 $x = 2$,由于 $y > x$,你支付 $l + 1000 = 1001$ 机器人币。 总共花费 $2007$ 机器人币,这在你的 $10^6$ 机器人币预算之内。 现在验证该策略总是有效的: - 如果你的初始技能是 $1$,第一个任务后变为 $5$。 - 如果你的初始技能是 $2$,第三个任务后变为 $3$,第四个任务后变为 $4$。 - 如果你的初始技能是 $3$,第二个任务后变为 $4$。 - 如果你的初始技能是 $4$,保持 $4$。 因此,无论初始技能如何,你最终都能达到技能 $\ge n$。 翻译由 DeepSeek 完成