模拟题,对几种情况进行分类讨论
对于数据小的情况下直接暴力模拟 数据大的情况下枚举中间点进行交换
if (i - 1 >= 0) ans = max(ans, (long long)a[i] * a[i - 1]);
if (i - 2 >= 0) ans = max(ans, (long long)a[i] * a[i - 2]);
if (i + 1 < n) ans = max(ans, (long long)a[i] * a[i + 1]);
米小游有一个长度为 n 的数组,其中第 i 个元素为 ai。现在定义数组的价值是最大的相邻数字的乘积。例如,数组为 [3,5,1,2],相邻元素的乘积分别是 3×5=15、5×1=5 和 1×2=2,则数组的价值是这些数字中的最大值,即 15。
现在米小游想要任选数组中的某两个相邻的元素进行交换(你必须使用这次交换机会),他想知道最大可以将数组的价值更改为多少?
第一行一个整数 n,表示数组长度。 接下来一行 n 个整数 a1,a2,a3⋯an 表示数组 a。
一行一个整数表示答案。
3
3 1 10
30
对于 100% 的数据,满足 2≤n≤105,1≤ai≤105。