k 不相交区间

题意:给定一个序列,要求从中选出 \(k\) 个不相交的区间使和最大。\(n\le 10^5\)

如果 DP,至少 \(O(n^2)\)。而这题可以模拟费用流做。

【费用流模型】

建立 \(n+1\) 个点 \(p_1\sim p_{n+1}\)\(p_i\rightarrow p_{i+1}\) 容量 \(1\) 费用 \(a_i\)

\(S\rightarrow p_1\sim p_n\),容量 \(1\) 费用 \(0\)

\(p_2\sim p_{n+1}\rightarrow T\),容量 \(1\) 费用 \(0\)

\(S'\rightarrow S\),容量 \(k\) 费用 \(0\)

【模拟费用流】

线段树模拟费用流,维护区间取相反数,区间最大子段和。

posted @ 2024-04-02 18:28  FLY_lai  阅读(14)  评论(0编辑  收藏  举报