CF2157F.Git Gud

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

你是一名为未来公司 RoboCorp 工作的冒险者。你当前的技能等级为整数 ss,范围在 [1,n][1, n],但你并不知道其具体值。你的目标是通过为 RoboCorp 完成任务,使你的技能提升到 nn 或更高,但每次执行任务都需要花费宝贵的 robocoin。

你可以选择任意难度和任意正整数时长(小时)的任务。然而,任务的花费既取决于新任务的持续时间,也与本次任务和你上一次任务的难度比较有关。

设 xx 为你最近一次任务的难度。如果你要选择一个新任务,难度为 yy,时长为 ll:

  • 如果这是你的第一项任务,或者 y≤xy \leq x,则花费 ll robocoin。
  • 如果 y>xy > x,则花费 1000+l1000 + l robocoin。

你的技能只会在任务难度与当前技能值精确匹配时提升:

  • 如果 y=sy = s,那么你的技能提升 ll。
  • 否则你的技能不会变化。

每次任务结束后,你依然不知道自己的实际技能值。

你一开始拥有 10610^6 robocoin。请你设计一个策略(即一系列任务),保证无论初始技能值如何,最终你的技能一定可以达到 nn 或更高,并且总花费不超过预算。

输入格式

输入包含一行一个整数 nn(n=4n=4 或 n=250 000n=250\,000),表示目标技能等级(即最终你的技能要达到 nn 或更高)。

本题总共包含 2 个测试点(包括示例)。示例为 n=4n=4,另一个测试点为 n=250 000n=250\,000。

本题不允许 hack。

输出格式

第一行输出一个整数 kk(0≤k≤1060 \leq k \leq 10^6),表示你计划需要完成的任务数量。

接下来 kk 行,每行输出两个整数 yy 和 ll(1≤y,l≤1061 \leq y, l \leq 10^6),表示第 ii 项任务的难度与时长(小时)。

输入输出样例

  • 输入#1

    4

    输出#1

    4
    1 4
    3 1
    2 1
    3 1

说明/提示

以示例为例,目标技能等级 n=4n=4。你可以采用如下策略:

  • 首先执行一次难度 y=1y=1、时长 l=4l=4 的任务。因为是第一次任务,仅需支付 l=4l=4 robocoin。
  • 执行难度 y=3y=3、时长 l=1l=1 的任务。上次难度 x=1x=1,由于 y>xy>x,需要支付 l+1000=1001l+1000=1001 robocoin。
  • 接着执行难度 y=2y=2、时长 l=1l=1 的任务。由于 y≤xy\leq x,只需支付 l=1l=1 robocoin。
  • 再次执行难度 y=3y=3、时长 l=1l=1 的任务。此时 y>xy>x,需支付 l+1000=1001l+1000=1001 robocoin。

合计花费 20072007 robocoin,未超出 10610^6 robocoin 预算。

我们验证该策略始终有效:

  • 若初始技能为 11,第一项任务过后技能变为 55。
  • 若初始技能为 22,到第三项任务后技能为 33,第四项任务后技能升为 44。
  • 若初始技能为 33,第二项任务后技能升为 44。
  • 若初始技能为 44,技能值始终为 44。

所以无论初始技能如何,最终你的技能都能达到 nn。

由 ChatGPT 5 翻译

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

首页