一个dp模板题

传送门

选择a和b,但是a有代价,b有代价,且a的代价是具有连续性的

#include <iostream>
#include <cstdio>
using namespace std;
const int maxn=2e5+5;
int dp[maxn][2];
int a[maxn],b[maxn];
int main(){
    int n,c;
    scanf("%d%d",&n,&c);
    for(int i=1;i<n;i++)
    scanf("%d",&a[i]);
    for(int i=1;i<n;i++)
    scanf("%d",&b[i]);
    printf("0 ");
    dp[0][1]=10000;
    for(int i=1;i<n;i++)
    {
        dp[i][0]=min(dp[i-1][1]+a[i],dp[i-1][0]+a[i]);
        dp[i][1]=min(dp[i-1][1]+b[i],dp[i-1][0]+b[i]+c);
        printf("%d ",min(dp[i][0],dp[i][1]));
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/Emcikem/p/11768168.html