思路
一看就是一个模版动态规划题。
我们设 $b_i$ 为只考虑前 $i$ 个人的最好效果值。
很明显在转移 $b_i$ 时有 $i$ 种情况,每一个分组分别一种。
于是,可以通过 $b_i=\max(b_i,b_{i-j}+a[j])$ 来转移。
最后输出 $b_n$ 即可。
代码
#include<bits/stdc++.h>
using namespace std;
int n,a[1005],b[1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
b[i]=max(b[i],b[i-j]+a[j]);
}
}
cout<<b[n];
}