哪个大佬能帮我see see(只过了第二个点)
查看原帖
哪个大佬能帮我see see(只过了第二个点)
352918
I_think_so_i_am_here楼主2024/3/15 12:21

我是用这题代码改的

#include<bits/stdc++.h>
using namespace std;
long long n,a[2000010],dp[2000010],dp2[2000010],maxx=-1e18;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++)a[n+i]=a[i];
	n*=2;
    dp[1]=a[1];
    for(int i=2;i<=n;i++)dp[i]=max(dp[i-1]+a[i],a[i]);
	for(int i=2;i<=n;i++)dp[i]=max(dp[i-1],dp[i]);
	dp2[n]=a[n];
    for(int i=n-1;i>=1;i--)dp2[i]=max(dp2[i+1]+a[i],a[i]);
	for(int i=n-1;i>=1;i--)dp2[i]=max(dp2[i+1],dp2[i]);
	for(int i=1;i<n;i++)maxx=max(maxx,dp[i]+dp2[i+1]);
	cout<<maxx<<endl;
	return 0;
}
2024/3/15 12:21
加载中...