85分
查看原帖
85分
1384464
yuyueLeo楼主2025/6/23 15:21

85分求改 记录

#include<bits/stdc++.h>
using namespace std;
long long a[400010],dp[400010],check[400100];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[i+n]=a[i];
    }
    long long ans=-1e18;
    for(int i=0;i<=2*n;i++){
        dp[i]=-1e18;
        check[i]=0;
    }
    for(int i=1;i<=n;i++){
        dp[i]=a[i];
        check[i]=1;
        ans=max(ans,dp[i]);
    }
    for(int i=1;i<=2*n;i++){
        if(check[i-1]>=1 && check[i-1]<n){
            if(dp[i-1]+a[i] > dp[i]){
                dp[i]=dp[i-1]+a[i];
                check[i]=check[i-1]+1;
                ans=max(ans,dp[i]);
            }
        }
        if(a[i] > dp[i]){
            dp[i]=a[i];
            check[i]=1;
            ans=max(ans,dp[i]);
        }
    }
    
    cout<<ans;
    return 0;
}
2025/6/23 15:21
加载中...