P1353_[USACO08JAN]跑步Running 我死了。。。

我死了。。。被绿题虐。。。看来我的水平有待提高。。。QWQ


好吧,就是跑步的时候只能从跑步的状态转移过来

休息的时候可以从上一次休息时转移过来,也可以从某次跑步的时转移过来,需要枚举从哪一个状态转移来的

就是这样,可是我不会。

#include<cstdio>
#include<iostream>
#include<cstring>
#define R register int
const int N=10010,M=510;
using namespace std;
inline int g() {
    R ret=0,fix=1; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-1:fix;
    do ret=ret*10+(ch^48); while(isdigit(ch=getchar())); return ret*fix;
}
int n,m;
int d[N],f[N][M];
signed main() { 
    n=g(),m=g(); for(R i=1;i<=n;++i) d[i]=g();
    for(R i=1;i<=n;++i) for(R j=m;j>=0;--j) { f[i][0]=f[i-1][0];
        if(j==0) for(R k=1;k<=min(i,m);k++) f[i][0]=max(f[i][0],f[i-k][k]);
        else f[i][j]=max(f[i-1][j-1]+d[i],f[i][j]);
    } printf("%d
",f[n][0]); 
}

2019.04.28在明天考试前突然意识到自己是个渣渣+zz+菜的不行的本质

原文地址:https://www.cnblogs.com/Jackpei/p/10785878.html