牛客--2024中国传媒大学程序设计大赛(同步赛)--A题解

A-小苯的区间和疑惑

题意:

做法:前缀最大值+后缀最大值  or  线段树维护最大子段和

int arr[200005],pre[200005],last[200005];
void solve(){           //小笨的区间和疑惑--前缀最大值+后缀最大值 or 线段树维护最大自段和
    int n; cin>>n;
    for(int i=1;i<=n;i++) cin>>arr[i];
    for(int i=1;i<=n;i++) pre[i]=max(pre[i-1]+arr[i],arr[i]);
    for(int i=n;i>=1;i--) last[i]=max(last[i+1]+arr[i],arr[i]);
    for(int i=1;i<=n;i++) cout<<pre[i]+last[i]-arr[i]<<" ";
}

G还没补出来..

 

posted @ 2024-03-24 14:42  osir  阅读(4)  评论(0编辑  收藏  举报