贪心、构造、DP、交互 合集(Part 2)
Problem A. CF704B Ant Man
题意:
有 \(n\) 个元素,第 \(i\) 个元素有五个参数 \(x_i,a_i,b_i,c_i,d_i\)。
你需要求出一个 \(1 \sim n\) 的排列 \(p\),满足 \(p_1 = s, p_n = e\),同时最小化这个排列的权值。
一个排列的权值为 \(\sum_{i=1}^{n-1} f(p_i, p_{i+1})\),其中 \(f(i,j)\) 定义为:
- 若 \(i > j\),则 \(f(i,j) = x_i - x_j + c_i + b_j\)。
- 若 \(i < j\),则 \(f(i,j) = x_j - x_i + d_i + a_j\)。
\(2 \leq n \le 5 \times 10^3\),\(s \ne e\),\(1 \le x_1 < x_2 < \cdots < x_n \le 10^9\),\(1 \le a_i,b_i,c_i,d_i \le 10^9\)。
解法:
这一类问题都可以描述如下:
你要求一个排列 \(p_1,p_2,\cdots,p_n\),最小 / 最大化 \(\sum \limits_{i=1}^{n-1} f(p_i,p_{i+1})\),其中 \(f(i,j)=\begin{cases} f(i)+g(j) && i<j\\h(i)+r(j) && i>j\end{cases}\)。
考虑到 \(f\) 的值与参数关系有关,考虑钦定顺序进行连续段 DP,记 \(f_{i,j}\) 表示已经填入 \([1,i]\),目前形成了 \(j\) 个连续段的答案。转移都是容易的,不过细节是插入 \(s\) 和 \(e\) 时有些转移是不合法的需要注意。