题解 | 秘藏

秘藏

https://www.nowcoder.com/practice/2ff33cc017d84907b3d2cf38fd138b81

#include<bits/stdc++.h>
#define int long long

using namespace std;

const int N=2e5+5;

int n,k;
int a[N],b[N];
int dp[N][2];

signed main()
{
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) cin>>b[i];
    for(int i=1;i<=n;i++) dp[i][0]=dp[i][1]=-1;
    dp[1][0]=a[1];
    for(int i=2;i<=n;i++)
    {
        if(dp[i-1][0]!=-1) dp[i][0]=dp[i-1][0]+a[i];
        if(dp[i-1][1]!=-1) dp[i][1]=dp[i-1][1]+b[i];
        if(dp[i-1][0]>=k) dp[i][1]=max(dp[i-1][0]+b[i]-k,dp[i][1]);
        if(dp[i-1][1]>=k) dp[i][0]=max(dp[i-1][1]+a[i]-k,dp[i][0]);
    }  
    cout<<max(dp[n][0],dp[n][1]);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务