https://codeforces.com/contest/1554/problem/A

INPUT
4
3
2 4 3
4
3 2 3 1
2
69 69
6
719313 273225 402638 473783 804745 323328
OUTPUT
12
6
4761
381274500335

题意:
给T,T组数据中给出一个n,然后是长度为n的数列,求选定一段区间内最大值和最小值之积 最大
做法:
试想数列中区间选取为a b c,其中 a > c && c > b;
第一直觉认为取 a * c得到最大值,但题目要求区间内的最小值和最大值相乘,但中间更小的b影响了
你取c,最终只能取到 a * b。
所以,我们的取值化为两个相邻的数取最大值
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t; cin>>t;
while(t--)
{
int n; cin >> n;
long long maxx = 0,num[10000006];
for(long long i = 0;i<n;i++)
{
cin >> num[i];
if(i >= 1)
maxx = max((num[i]*num[i-1]),maxx);
}
cout << maxx << endl;
}
}
如有问题敬请指正
ε=ε=ε=┏(゜ロ゜;)┛

被折叠的 条评论
为什么被折叠?



