一个dp模板题

Posted Emcikem

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个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;
}

以上是关于一个dp模板题的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯之算法模板题 Python版

不要62(数位dp模板题)

区间dp(石子合并)模板题

石子合并 区间DP模板题

51Nod-1006LCS+输出路径模板题

HDU1300 Pearls (斜率dp模板题)