CF2157F.Git Gud
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
你是一名为未来公司 RoboCorp 工作的冒险者。你当前的技能等级为整数 s,范围在 [1,n],但你并不知道其具体值。你的目标是通过为 RoboCorp 完成任务,使你的技能提升到 n 或更高,但每次执行任务都需要花费宝贵的 robocoin。
你可以选择任意难度和任意正整数时长(小时)的任务。然而,任务的花费既取决于新任务的持续时间,也与本次任务和你上一次任务的难度比较有关。
设 x 为你最近一次任务的难度。如果你要选择一个新任务,难度为 y,时长为 l:
- 如果这是你的第一项任务,或者 y≤x,则花费 l robocoin。
- 如果 y>x,则花费 1000+l robocoin。
你的技能只会在任务难度与当前技能值精确匹配时提升:
- 如果 y=s,那么你的技能提升 l。
- 否则你的技能不会变化。
每次任务结束后,你依然不知道自己的实际技能值。
你一开始拥有 106 robocoin。请你设计一个策略(即一系列任务),保证无论初始技能值如何,最终你的技能一定可以达到 n 或更高,并且总花费不超过预算。
输入格式
输入包含一行一个整数 n(n=4 或 n=250000),表示目标技能等级(即最终你的技能要达到 n 或更高)。
本题总共包含 2 个测试点(包括示例)。示例为 n=4,另一个测试点为 n=250000。
本题不允许 hack。
输出格式
第一行输出一个整数 k(0≤k≤106),表示你计划需要完成的任务数量。
接下来 k 行,每行输出两个整数 y 和 l(1≤y,l≤106),表示第 i 项任务的难度与时长(小时)。
输入输出样例
输入#1
4
输出#1
4 1 4 3 1 2 1 3 1
说明/提示
以示例为例,目标技能等级 n=4。你可以采用如下策略:
- 首先执行一次难度 y=1、时长 l=4 的任务。因为是第一次任务,仅需支付 l=4 robocoin。
- 执行难度 y=3、时长 l=1 的任务。上次难度 x=1,由于 y>x,需要支付 l+1000=1001 robocoin。
- 接着执行难度 y=2、时长 l=1 的任务。由于 y≤x,只需支付 l=1 robocoin。
- 再次执行难度 y=3、时长 l=1 的任务。此时 y>x,需支付 l+1000=1001 robocoin。
合计花费 2007 robocoin,未超出 106 robocoin 预算。
我们验证该策略始终有效:
- 若初始技能为 1,第一项任务过后技能变为 5。
- 若初始技能为 2,到第三项任务后技能为 3,第四项任务后技能升为 4。
- 若初始技能为 3,第二项任务后技能升为 4。
- 若初始技能为 4,技能值始终为 4。
所以无论初始技能如何,最终你的技能都能达到 n。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?