f[1] = a[1]%p;//到i的最大子段和 mark[1] = f[1]%p;//初始化 maxn = mark[1];//求最大分数 ans = (f[1]+mark[1])%p;//前i-1个人的max(分数+特征) for(int i=2; i<=n; i++){ f[i] = max(f[i-1]+f[i],f[i])%p; ans = max(ans,(f[i-1]+mark[i-1])%p)%p; mark[i] = ans; maxn = max(maxn,mark[i]); }