CF477E.Dreamoon and Notepad
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Dreamoon 刚刚用 notepad.exe 创建了一个困难题目的文档。该文档由 n 行文本组成,第 i 行的长度为 ai。现在他想知道在这么长的文档中,如何以最快的方式移动光标。
记 $ (r, c) $ 为当前光标的位置,其中 r 是行号,c 是该行中的光标位置。满足 1≤r≤n,0≤c≤ar。
在 notepad.exe 中,假设当前光标在 $ (r, c) $,我们可以用如下六种操作移动光标:
- 上键(up):新的光标位置 $ (nr, nc) = (\max(r-1,1), \min(a_{nr}, c)) $
- 下键(down):新的光标位置 $ (nr, nc) = (\min(r+1, n), \min(a_{nr}, c)) $
- 左键(left):新的光标位置 $ (nr, nc) = (r, \max(0, c-1)) $
- 右键(right):新的光标位置 $ (nr, nc) = (r, \min(a_{nr}, c+1)) $
- HOME 键:新的光标位置 $ (nr, nc) = (r, 0) $
- END 键:新的光标位置 $ (nr, nc) = (r, a_{r}) $
你将得到文档的描述(n 和数列 ai),以及 Dreamoon 的 q 个询问。每个询问会给出一个起始光标位置 $ (r_{1}, c_{1}) $ 和目标光标位置 $ (r_{2}, c_{2}) $,询问将光标从 $ (r_{1}, c_{1}) $ 移动到 $ (r_{2}, c_{2}) $ 至少需要多少次按键。
输入格式
第一行为一个整数 n(1≤n≤105),表示文本的行数。
第二行为 n 个整数 a1,a2,…,an,其中 ai 表示第 i 行的长度(0≤ai≤106)。
第三行为一个整数 q,表示询问的数量(1≤q≤105)。
接下来的 q 行,每行四个整数 r1,c1,r2,c2,表示一次询问:初始光标在第 r1 行第 c1 个位置,目标为第 r2 行第 c2 个位置。保证 1≤r1,r2≤n,0≤c1≤ar1,0≤c2≤ar2。
输出格式
对于每个询问,输出该询问的答案,即最少的按键次数,每行一个结果。
输入输出样例
输入#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测评打分。不知道怎么写?