选择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;
}