核心代码部分
for(int i=1;i<=n;++i){ f[i]=f[i-1]; if(last[a[i]]) f[i]=max(f[i],f[last[a[i]]+1]+sum[i]-sum[last[a[i]]+1]+a[i]); last[a[i]]=i; }
这里的 last[a[i]]+1 有可能等于 i,因此你要先把 i 更新成 f[i-1]
last[a[i]]+1
i
f[i-1]