CF2027D1.The Endspeaker (Easy Version)

普及+/提高

通过率:0%

AC君温馨提醒

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

题目描述

这是该问题的简单版本。唯一的区别在于,在本版本中你只需要输出操作的最小总代价。你必须同时完成两个版本才能进行 hack。

给定一个长度为 nn 的数组 aa,以及一个长度为 mm 的数组 bb(满足对于所有 1≤i<m1 \le i < m,都有 bi>bi+1b_i > b_{i+1})。初始时,kk 的值为 11。你的目标是通过重复执行以下两种操作之一,使数组 aa 变为空:

  • 类型 11 —— 如果 kk 的值小于 mm 且数组 aa 非空,你可以将 kk 的值加 11。此操作不产生任何代价。
  • 类型 22 —— 你可以移除数组 aa 的一个非空前缀,前提是该前缀的元素和不超过 bkb_k。此操作的代价为 m−km - k。

你需要最小化将数组 aa 变为空所需操作的总代价。如果无法通过任何操作序列将 aa 变为空,则输出 −1-1。否则,输出操作的最小总代价。

输入格式

每个测试包含多组测试用例。第一行包含测试用例数 tt(1≤t≤10001 \le t \le 1000)。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nn 和 mm(1≤n,m≤3⋅1051 \le n, m \le 3 \cdot 10^5,1≤n⋅m≤3⋅105\boldsymbol{1 \le n \cdot m \le 3 \cdot 10^5})。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \le a_i \le 10^9)。

第三行包含 mm 个整数 b1,b2,…,bmb_1, b_2, \ldots, b_m(1≤bi≤1091 \le b_i \le 10^9)。

保证对于所有 1≤i<m1 \le i < m,都有 bi>bi+1b_i > b_{i+1}。

保证所有测试用例中 n⋅m\boldsymbol{n \cdot m} 的总和不超过 3⋅1053 \cdot 10^5。

输出格式

对于每个测试用例,如果可以将 aa 变为空,则输出操作的最小总代价。

如果不存在任何可以将 aa 变为空的操作序列,则输出一个整数 −1-1。

输入输出样例

  • 输入#1

    5
    4 2
    9 3 4 3
    11 7
    1 2
    20
    19 18
    10 2
    2 5 2 1 10 3 2 9 9 6
    17 9
    10 11
    2 2 2 2 2 2 2 2 2 2
    20 18 16 14 12 10 8 6 4 2 1
    1 6
    10
    32 16 8 4 2 1

    输出#1

    1
    -1
    2
    10
    4

说明/提示

在第一个测试用例中,一种总代价为 11 的最优操作序列如下:

  • 执行一次类型 22 操作。选择前缀为 [9][9]。此操作代价为 11。
  • 执行一次类型 11 操作。此时 kk 变为 22。此操作无代价。
  • 执行一次类型 22 操作。选择前缀为 [3,4][3, 4]。此操作代价为 00。
  • 执行一次类型 22 操作。选择前缀为 [3][3]。此操作代价为 00。
  • 此时数组 aa 已为空,所有操作的总代价为 11。

在第二个测试用例中,无法移除任何前缀,因为 a1>b1a_1 > b_1,因此无法通过任何操作序列将数组 aa 变为空。

由 ChatGPT 4.1 翻译

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

首页