A94820.信号的最佳共鸣

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

通信兵小李截获了两段加密的数字信号,分别记录为序列 AA 和序列 BB
序列 AA 包含 NN 个整数,序列 BB 包含 MM 个整数。

为了破解密码,小李需要找到这两段信号的“最大共鸣强度”。
具体的计算规则如下:

  1. 从序列 AA 中挑选出一个子序列(保持原顺序)。
  2. 从序列 BB 中挑选出一个长度相同的子序列(保持原顺序)。
  3. 将这两个子序列对应位置的数字相乘,并将所有乘积相加,得到的结果就是“共鸣强度”。

注意:

  • 选出的子序列不能为空(至少包含 1 个数字)。
  • 你可以删除原序列中的某些数字,但不能改变剩余数字的相对顺序。

请你帮助小李计算出,能够获得的的最大共鸣强度是多少。

输入格式

第一行包含一个整数 NN,表示序列 AA 的长度。
第二行包含 NN 个整数,表示序列 AA 的内容。
第三行包含一个整数 MM,表示序列 BB 的长度。
第四行包含 MM 个整数,表示序列 BB 的内容。

输出格式

输出一个整数,表示最大的共鸣强度。

输入输出样例

  • 输入#1

    4
    2 1 -2 5
    3
    3 0 -6

    输出#1

    18
  • 输入#2

    2
    3 -2
    3
    2 -6 7

    输出#2

    21
  • 输入#3

    2
    -1 -1
    2
    1 1

    输出#3

    -1

说明/提示

样例解释与数据范围

样例 #1 解释

  • 序列 AA: [2, 1, -2, 5]
  • 序列 BB: [3, 0, -6]
  • 我们可以从 AA 中选出子序列 [2, -2] (下标 0, 2)。
  • BB 中选出子序列 [3, -6] (下标 0, 2)。
  • 对应位置相乘求和:2×3+(2)×(6)=6+12=182 \times 3 + (-2) \times (-6) = 6 + 12 = 18
  • 这是能得到的最大值。

样例 #3 解释

  • 序列 AA: [-1, -1] (全负)
  • 序列 BB: [1, 1] (全正)
  • 无论怎么选,乘积都是负数。为了让结果最大(最接近 0),我们只选一组:(1)×1=1(-1) \times 1 = -1
  • 注意:题目要求子序列非空,所以不能选空集(结果为 0),必须选这一对,答案是 -1。

数据范围

  • 对于 100%100\% 的数据:
    • 1N,M5001 \le N, M \le 500
    • 1000信号数值1000-1000 \le \text{信号数值} \le 1000

数据点分布:

  • 测试点 1-5:N,M10N, M \le 10
  • 测试点 6-15:N,M100N, M \le 100
  • 测试点 16-25:N,M500N, M \le 500
首页