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;
}

相关文章:

  • 2022-12-23
  • 2021-08-07
  • 2021-12-17
  • 2022-12-23
  • 2022-12-23
  • 2021-05-01
  • 2021-07-14
  • 2021-07-26
猜你喜欢
  • 2021-11-01
  • 2022-02-01
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2021-09-15
相关资源
相似解决方案