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\)。
【模拟费用流】
线段树模拟费用流,维护区间取相反数,区间最大子段和。