CF1519D Maximum Sum of Products

题目描述

给定两个长度为 $n$ 的整数数组 $a$ 和 $b$。 你可以至多反转一次数组 $a$ 的一个子数组(连续子段)。 你的任务是选择反转哪个子数组,使得 $\sum\limits_{i=1}^n a_i \cdot b_i$ 的值最大。

输入格式

第一行包含一个整数 $n$($1 \le n \le 5000$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^7$)。 第三行包含 $n$ 个整数 $b_1, b_2, \dots, b_n$($1 \le b_i \le 10^7$)。

输出格式

输出一个整数,表示在至多反转一次 $a$ 的一个连续子数组后,能够得到的最大和。

说明/提示

在第一个样例中,你可以反转子数组 $[4, 5]$。此时 $a = [2, 3, 2, 3, 1]$,计算得 $2 \cdot 1 + 3 \cdot 3 + 2 \cdot 2 + 3 \cdot 4 + 1 \cdot 2 = 29$。 在第二个样例中,你无需进行反转操作。$13 \cdot 2 + 37 \cdot 4 = 174$。 在第三个样例中,你可以反转子数组 $[3, 5]$。此时 $a = [1, 8, 3, 6, 7, 6]$,计算得 $1 \cdot 5 + 8 \cdot 9 + 3 \cdot 6 + 6 \cdot 8 + 7 \cdot 8 + 6 \cdot 6 = 235$。 由 ChatGPT 4.1 翻译