万能方块可视为这排方块的最后一块,移动方块就相当于让队尾的方块移动到队首。所以这题就相当于求首尾方块和的最大值。当首为1时,尾为n+1;首为n+1时,尾为n;首为n时,尾为n-1;首为n-1时,尾为n-2。可以得出除了首为1时,尾都是首减去1。 下面是代码:
#include<bits/stdc++.h>
#define int long long
int a[200005];
using namespace std;
signed main(){
int T;
cin>>T;
while(T--){
int n,mx=0;
cin>>n;
int N=n+1;
cin>>a[N];
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int r=n+1;r>=1;r--){
int l=r+1;
if(r==n+1)l=1;
mx=max(mx,a[l]+a[r]);
}
cout<<mx<<endl;
}
}

京公网安备 11010502036488号