https://oj.czos.cn/p/1653
dp[1]=a[1];
dp[2]=max(a[1],a[2]);
for (int i=3;i<=n;i++){
dp[i]=max(dp[i-1],dp[i-2]+a[i]);
}
dp[0][0]=0;
dp[0][1]=-INT_MAX;
for (int i=1;i<=n;i++){
dp[i][0]=max(dp[i-1][1],dp[i-1][0]);
dp[i][1]=dp[i-1][0]+a[i];
}
cout<<max(dp[n][0],dp[n][1]);
https://oj.czos.cn/p/2569
void dfs (int x){
dp[x][0]=0;dp[x][1]=w[x];
for (int i=head[x];i;i=a[i].next){
int to=a[i].to;
dfs(to);
dp[x][0] += max(dp[to][0],dp[to][1]);
dp[x][1] += dp[to][0];
}
}
https://oj.czos.cn/p/2570
int dfs (int x,int fa){
int d1=0,d2=0;
for (int i=head[x];i;i=a[i].next){
int to = a[i].to;
if(to!=fa){
int d=a[i].len+dfs(to,x);
if(d>d1) d2=d1,d1=d;
else if(d>d2) d2=d;
}
}
ans=max(ans,d1+d2);
return d1;
}
https://oj.czos.cn/p/2554
for (int i=1;i<=n;i++){
for (int j=2;j<=n/i;j++){
sum[i*j]+=i;
}
}
for (int i=n;i>=1;i--){
int p=sum[i];
if(p<i){
if(d1[i]+1>d1[p]) d2[p]=d1[p],d1[p]=d1[i]+1;
else if (d1[i]+1>d2[p]) d2[p]=d1[i]+1;
}
}
for (int i=1;i<=n;i++) ans=max(ans,d1[i]+d2[i]);