题目翻译

有 $n$ 个数,可以选择一个区间 $[l,r]$ 进行一次翻转。最大的相邻两个数的和是多少。

题目思路

最大的和,肯定就是最大加次大。而次大肯定能翻转到最大旁边,所以答案就是次大加最大。

为什么次大肯定翻转到最大旁边:用样例解释一下。

6
5 2 1 4 7 3

翻转 $[1,4]$。

6
4 1 2 5 7 3

最大是 $7$,次大是 $5$。

不管怎么样,以次大为一个端点,最大旁边为一个端点,永远能保证次大换到最大旁边。

题目代码

void solve()
{
    int n;
    cin>>n;
    int a[n+1];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1);//sort从小到大排序。
    cout<<a[n]+a[n-1]<<endl;
}
最后修改:2023 年 04 月 22 日
v我50吃疯狂星期四