P2123 皇后游戏(贪心,邻项交换)

当做一个笔记吧。

我写的这篇文章说明了临项交换在最优排列问题中的正确性,所以可以放心考虑临项交换。我们的目标是设计一个满足严格弱序的 \(\text{cmp}\) 函数。

考察 \(x,y\) 分别在 \(i+1,i+2\) 位置的情况,不妨假设 \(x\)\(y\) 前,\(s_i\) 表示 \(i\) 的前缀和,那么有:

\[c_y=\max\{\{c_i,s_i+a_x\}+b_x,s_i+a_x+a_y\}+b_y \]

根据 \(\max\) 结合律吸进去:

\[c_y=\max\{c_i+b_x+b_y,s_i+a_x+b_x+b_y,s_i+a_x+a_y+b_y\} \]

交换 \(x,y\) 只对后面两项造成影响,那么对后两项列出式子:

\[\max\{a_x+b_x+b_y,a_x+a_y+b_y\}< \max\{a_y+b_x+b_y,a_y+a_x+b_x\} \]

\[a_x+b_y+\max (a_y,b_x)< a_y+b_x+\max(a_x,b_y) \]

\(a_x+a_y+b_x+b_y\) 四项和减去上面的东西可以得到题解式子 \(\min(a_x,b_y)<\min(a_y,b_x)\)

但是这个关系不满足不可比的传递性,所以考虑加入一些条件来加强性质。考虑在 \(\min(a_x,b_y)=\min(a_y,b_x)\) 的情况下,\(a_i\) 小的需要放前面(感性理解,前缀和会变小),那么我们以上面的条件作为第一个关键字,\(a_x\) 作为第二关键字排序。可以写个程序来验证正确性。

启示:对于最优排列问题,可以通过临项交换来得到一个可行的排序条件,再通过加强限制使它满足严格弱序。不过我现在遇到的大部分最优排列问题其实上都是找性质然后 DP……

posted @ 2022-10-17 10:28  yllcm  阅读(59)  评论(0)    收藏  举报