我死了。。。被绿题虐。。。看来我的水平有待提高。。。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+菜的不行的本质