码蹄杯 车站 题型:枚举 难度:白银 半独立完成

41 阅读1分钟

码题集OJ-车站 (matiji.net)

image.png

样例输入1

5
1 3 4 2

样例输出1

3

样例输入2

7
1 3 7 5 6 6

样例输出2

7

思想

乍一看这道题像是一道贪心题,但是我们看数据范围,n只有1E3,我们可以O(n2)O(n^{2})枚举做

枚举每个超级中转站.对于每个中转栈我们都找其左边的最小值和右边的最小值.

最后求一下所有超级中转站 中 leftmin+rightmin的最大的那个就是答案

code

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int n,ans=0;
const int N=1010;
int a[N];
int main()
{
	cin>>n;
	for(int i=1;i<=n-1;i++) cin>>a[i];
	
	
	//枚举超级中转站
	for(int i=2;i<=n-1;i++)
	{
		int minn1=INF;
		for(int l=1;l<i;l++)
		{
			minn1=min(minn1,a[l]);
		}
		int minn2=INF;
		for(int r=i;r<=n-1;r++)
        {
        	minn2=min(minn2,a[r]); 
		}
		
		ans=max(ans,minn1+minn2);
	 } 
	 
	 cout<<ans<<endl;
	return 0;
}

image.png