CF477E.Dreamoon and Notepad

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

Dreamoon 刚刚用 notepad.exe 创建了一个困难题目的文档。该文档由 nn 行文本组成,第 ii 行的长度为 aia_{i}。现在他想知道在这么长的文档中,如何以最快的方式移动光标。

记 $ (r, c) $ 为当前光标的位置,其中 rr 是行号,cc 是该行中的光标位置。满足 1≤r≤n1 \leq r \leq n,0≤c≤ar0 \leq c \leq a_{r}。

在 notepad.exe 中,假设当前光标在 $ (r, c) $,我们可以用如下六种操作移动光标:

  1. 上键(up):新的光标位置 $ (nr, nc) = (\max(r-1,1), \min(a_{nr}, c)) $
  2. 下键(down):新的光标位置 $ (nr, nc) = (\min(r+1, n), \min(a_{nr}, c)) $
  3. 左键(left):新的光标位置 $ (nr, nc) = (r, \max(0, c-1)) $
  4. 右键(right):新的光标位置 $ (nr, nc) = (r, \min(a_{nr}, c+1)) $
  5. HOME 键:新的光标位置 $ (nr, nc) = (r, 0) $
  6. END 键:新的光标位置 $ (nr, nc) = (r, a_{r}) $

你将得到文档的描述(nn 和数列 aia_{i}),以及 Dreamoon 的 qq 个询问。每个询问会给出一个起始光标位置 $ (r_{1}, c_{1}) $ 和目标光标位置 $ (r_{2}, c_{2}) $,询问将光标从 $ (r_{1}, c_{1}) $ 移动到 $ (r_{2}, c_{2}) $ 至少需要多少次按键。

输入格式

第一行为一个整数 nn(1≤n≤1051 \leq n \leq 10^5),表示文本的行数。

第二行为 nn 个整数 a1,a2,…,ana_{1}, a_{2}, \ldots, a_{n},其中 aia_{i} 表示第 ii 行的长度(0≤ai≤1060 \leq a_{i} \leq 10^6)。

第三行为一个整数 qq,表示询问的数量(1≤q≤1051 \leq q \leq 10^5)。

接下来的 qq 行,每行四个整数 r1,c1,r2,c2r_{1}, c_{1}, r_{2}, c_{2},表示一次询问:初始光标在第 r1r_{1} 行第 c1c_{1} 个位置,目标为第 r2r_{2} 行第 c2c_{2} 个位置。保证 1≤r1,r2≤n1 \leq r_{1}, r_{2} \leq n,0≤c1≤ar10 \leq c_{1} \leq a_{r_{1}},0≤c2≤ar20 \leq c_{2} \leq a_{r_{2}}。

输出格式

对于每个询问,输出该询问的答案,即最少的按键次数,每行一个结果。

输入输出样例

  • 输入#1

    9
    1 3 5 3 1 3 5 3 1
    4
    3 5 3 1
    3 3 7 3
    1 0 3 3
    6 0 7 3
    

    输出#1

    2
    5
    3
    2
    
  • 输入#2

    2
    10 5
    1
    1 0 1 5
    

    输出#2

    3
    

说明/提示

在第一个样例中,第一个询问可以通过依次按下 HOME、right 按键完成。

第二个询问可以通过依次按下 down、down、down、END、down 完成。

第三个询问可以通过依次按下 down、END、down 完成。

第四个询问可以通过依次按下 END、down 完成。

由 ChatGPT 5 翻译

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

首页