CF2023F.Hills and Pits

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

在一个地势起伏的沙漠城市中,市政府计划购置一辆自卸卡车来平整道路。道路按从左到右的顺序被分为 $ n $ 段,编号为 $ 1 $ 到 $ n $。第 $ i $ 段道路的初始高度是 $ a_i $ 。如果某段道路的高度高于 $ 0 $,则需要自卸卡车从中移走部分沙子;如果低于 $ 0 $,则需要用沙子填平。所有路段在开始时的高度都不为 $ 0 $。

当卡车在第 $ i $ 段时,它可以取走 $ x $ 单位的沙子,使该段高度减少 $ x $,或者可以填入 $ x $ 单位的沙子(前提是车上至少有 $ x $ 单位沙子),使该段高度增加 $ x $。

卡车可以从任一段开始工作。移动到相邻的下一段或上一段需要花费 $ 1 $ 分钟,而装填和卸料的时间则可以忽略不计。卡车有无限容量,最初是空车。

你的任务是计算出将每个路段高度调整为 $ 0 $ 所需的最短时间。注意,完成所有操作后,车上可能仍残留沙子。你需要单独解决每个从 $ l_i $ 到 $ r_i $ 段的沙子调整问题,且只能使用指定段内的沙子。

输入格式

第一行输入一个整数 $ t $ ($ 1 \le t \le 10^4 $)表示测试用例的数量。紧随其后的是每组测试用例的具体描述。

每个测试用例的第一行包含两个整数 $ n $ 和 $ q $ ($ 1 \le n, q \le 3 \cdot 10^5 $)—— 分别表示路段数量和查询次数。

第二行给出 $ n $ 个整数 $ a_1, a_2, \ldots, a_n $ ($ -10^9 \le a_i \le 10^9 $,且 $ a_i \neq 0 $),代表每个路段的初始高度。

接下来 $ q $ 行中,每行两个整数 $ l_i $ 和 $ r_i $ ($ 1 \le l_i \le r_i \le n $),表示需要寻找最短时间的区间。

保证所有测试用例中 $ n $ 的总和以及 $ q $ 的总和不超过 $ 3 \cdot 10^5 $。

输出格式

对于每个查询,输出调整区间 $ [l_i, r_i] $ 的沙子高度至 $ 0 $ 所需的最短时间,如果无法完成,输出 $ -1 $。

本翻译由 AI 自动生成

输入输出样例

  • 输入#1

    5
    1 1
    -179
    1 1
    5 3
    -2 2 -1 3 -1
    2 4
    1 5
    1 3
    7 1
    1 1 1 -4 1 1 1
    1 7
    7 2
    2 -2 2 -2 1 2 -1
    1 7
    2 7
    4 4
    1000000000 1000000000 999999999 -1000000000
    2 4
    3 4
    2 3
    1 3

    输出#1

    -1
    2
    5
    -1
    8
    6
    6
    2
    -1
    1
    2

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

首页