Loading... [题目链接](https://www.luogu.org/problemnew/show/P1353 "题目链接") <!--more--> - 这是道绿题???? - 简单到不敢相信 - 直接上代码: ```cpp #include<bits/stdc++.h> using namespace std; int f[10009][509],n,m,a[10009]; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } f[1][1]=a[1]; //f(i,j)代表前i个时间里劳累度为j的最大路程。 for(int i=1;i<=n;i++){ for(int j=0;j<=m&&j<=i;j++){ if(j==0){ f[i][j]=max(f[i][j],f[i-1][j]); } else{ f[i+j][0]=max(f[i+j][0],f[i][j]); } f[i+1][j+1]=max(f[i+1][j+1],f[i][j]+a[i+1]); } } cout<<f[n][0]; return 0; } ``` Last modification:March 14, 2020 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏