奶牛的鍛鍊 DP

Description

奶牛Bessie有N分鐘時間跑步,每分鐘她可以跑步或者休息。若她在第i分鐘跑步,可以跑出D_i米,同時疲倦程度增加1(初始爲0)。若她在第i分鐘休息,則疲倦程度減少1。無論何時,疲倦程度都不能超過M。另外,一旦她開始休息,只有當疲憊程度減爲0時才能重新開始跑步。在第N分鐘後,她的疲倦程度必須爲0。

Input

第一行,兩個整數,代表N和M。
接下來N行,每行一個整數,代表D_i。

Output

Bessie想知道,她最多能跑的距離。

Sample Input

5 2 5 3 4 2 10

Sample Output

9

HINT

N <= 2000 , M <= 500 , D_i <= 1000


#include<stdio.h>   
int dp[2001][501],a[2001],n,m;  
int max(int x,int y)
{
    if(x>y)
        return x;
    return y;
}
int main()  
{     
    scanf("%d%d",&n,&m);  
    for(int i=1;i<=n;i++)  
        scanf("%d",&a[i]);   
    for(int i=1;i<=n;i++)  
    {  
        dp[i][0]=dp[i-1][0];  
        for(int j=1;j<=m;j++)  
        {  
            dp[i][j]=max(dp[i-1][j-1]+a[i],dp[i][j]);  
            if(i>j) 
                dp[i][0]=max(dp[i][0],dp[i-j][j]);  
        }  
    }  
    printf("%d",dp[n][0]);    
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章