C-小竹关禁闭_牛客小白月赛60 (nowcoder.com)
理解dp: 找每个位置的最优解
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+9;
int a[N],f[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
int mx=0;
for(int i=1;i<=n;i++){
if(i-k-1>=1)f[i]=max(a[i]+f[i-k-1],f[i-1]);
else f[i]=max(a[i],f[i-1]);
mx=max(f[i],mx);
}
// for(int i=1;i<=n;i++) cout<<f[i]<<' ';
cout<<mx<<'\n';
return 0;
}