E21 线性DP 大盗阿福_哔哩哔哩_bilibili
U224502 大盗阿福 - 洛谷
U574437 大盗阿福 - 洛谷
// 分步转移
#include<iostream>
using namespace std;
const int N=100010;
int T,n,w[N],f[N];
int main(){
for(cin>>T;T--;){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&w[i]);
f[0]=0; f[1]=w[1];
for(int i=2; i<=n; i++){
f[i]=max(f[i-1],f[i-2]+w[i]);
}
printf("%d\n", f[n]);
}
}
// 分类转移
#include<iostream>
using namespace std;
const int N=100010;
int n,t,w[N],f[N][2];
int main(){
for(scanf("%d",&t);t--;){
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&w[i]);
f[1][0]=0; f[1][1]=w[1];
for(int i=2; i<=n; i++){
f[i][0]=max(f[i-1][0],f[i-1][1]);
f[i][1]=f[i-1][0]+w[i];
}
printf("%d\n",max(f[n][0],f[n][1]));
}
}