码蹄杯 最佳邻居 题型:找规律 难度:白银

133 阅读1分钟

码题集OJ-最佳邻居 (matiji.net)

样例解析

这道题关键就在于找1最优取法.看线形图发现4个邻居取总和想最大的话要把中间这个数(0)跳过,那么就要考虑一个最优取法.

image.png

但是看环图,发现我们只要按连续的取法取是可以取到最大值的: image.png

因此本题的最优取法就是按照正常顺序从前向后取环上连续的四个点,求最大值.

code

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int idx,ans=-1e9+10;
int main()
{
	int n;cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	
	
	for(int i=0;i<n;i++)
	{
	   int temp=a[i]+a[(i+1)%n]+a[(i+2)%n]+a[(i+3)%n];
	   if(temp>ans) 
	   {
	   	ans=temp;
	   	idx=i;
	   }
	} 
	
	cout<<ans<<endl<<idx+1<<endl;
	return 0;
}

image.png