Archie

还是很水的

注意一下边界

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,m;
int d[10001];
int dp[10005][505];
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		scanf("%d",&d[i]);
	}
	memset(dp,0xc0,sizeof(dp));
	dp[0][0]=0;
//	cout<<dp[0][1];
	for(int i=1;i<=n;++i){
		for(int j=0;j<=i&&j<=m;++j){
			if(j==0){
				for(int k=max(1,i-m);k<i;++k){
					dp[i][j]=max(dp[i][j],dp[k][i-k]);
				}
				dp[i][j]=max(dp[i][j],dp[i-1][0]);
			}else{
				dp[i][j]=dp[i-1][j-1]+d[i];
			}
		} 
	}
	cout<<dp[n][0];
	return 0;
}