P5851 [USACO19DEC] Greedy Pie Eaters P

发布时间 2023-09-10 12:59:27作者: 御坂夏铃

如果只考虑选哪些奶牛吃派和奶牛吃派的顺序,就会陷入僵局,我们不妨考虑派的情况。

\(f_{i,j}\) 表示 \(i\sim j\) 这一段派,能满足一些奶牛,它们的最大可能体重。因为一头奶牛至少吃一个派,我们只关心区间内奶牛吃派的相对顺序,所以转移可以枚举当前区间最后吃的这头奶牛吃的某个派 \(k\)。当然还要满足这头奶牛不会吃 \(i\sim j\) 范围之外的派:

\[f_{i,j}=f_{i,k-1}+f_{k+1,j}+w_p(i\leq l_p\leq k\leq r_p\leq j) \]

直接搞显然是 \(O(N^3M)\) 的。仔细观察一下,发现奶牛是否合法仅仅取决于 \(i,j,k\) 对其 \(l,r\) 的限制,奶牛产生的贡献也仅仅取决于其本身的 \(w\)。不妨令 \(g_{i,j,k}\) 表示在该限制下最大的 \(w\),那么转移方程就变为:

\[f_{i,j}=f_{i,k-1}+f_{k+1,j}+g_{i,j,k} \]

\(g\) 的预处理也很简单(没有两头奶牛喜欢吃相同范围的派):

\[g_{l_p,r_p,l_p\sim r_p}=w_p \]

\[g_{i,j,k}=\max\{g_{i+1,j,k},g_{i,j-1,k}\} \]

其实就是预处理一下区间 \(\max\),时间复杂度变为 \(O(N^3)\)