Link
有趣的 DP 题,难点在于从哪里开始入手以及优化(也许)。
显然 DP 可以方便地处理这个 \(\max\) 值的转移,但是从哪个位置开始 DP 呢?注意到周期呈现环状,也就是说一周的第 \(n\) 天和下一周的第 \(1\) 天是可以结合产生贡献的,我们钦定第 \(1\) 天休息开始 DP,答案最终存储在 \(dp_{n + 1}\) 中。令 \(dp_i\) 表示在前 \(i\) 天中,最近一次休息在第 \(i\) 天时的最大价值,有转移:
\[dp_{r} = \max_{l = 1}^{r} \{ dp_l + v(l, r) \}
\]
其中 \(v(l, r)\) 表示第 \(l\) 天和第 \(r\) 天休息,在 \([l + 1, r - 1]\) 连续工作时的价值获取总和。注意到这个东西呈现出一个“单峰”的趋势,从中间断开形成一个镜像形状形如 \(a_1, a_2, a_3, \dots, a_3, a_2, a_1\),尝试通过前缀和来维护这个东西,将区间长度除以 \(2\) 之后分奇偶算贡献。