[BJWC2008]方程

文章部分内容参考 \(2016\) 国家集训队论文浅谈线性规划与对偶问题。

题意分析

首先整理题意:对于每次给定的 \(S_i,T_i\),求对于所有满足 \(\sum\limits_{j=1}^nA_jX_j=Si \wedge\sum\limits_{j=1}^nB_jX_j=T_i\)\(X_j(j\in[1,n], j\in \Z)\),求 \(\sum\limits_{j=1}^nC_jX_j\) 的最大值。

问题求解

可以发现,这是一个线性规划模板题,甚至已经给出了标准型:

\[\max z = \sum\limits_{j=1}^nC_jX_j\\ s.t.\left\{ \begin{aligned} \sum\limits_{j=1}^nA_jX_j=Si\\ \sum\limits_{j=1}^nB_jX_j=T_i \end{aligned} \right. \]

于是一个很自然的想法就出现了:用单纯形求解。(然后就愉快地收获了TLE。)

看一下问题出在哪:

用单纯形求解的核心操作是 \(\operatorname{pivot}\) 操作,其复杂度为 \(\operatorname{O}(NM')\),即 \(\operatorname{O}(N)\)(题目中 \(M'=3\)注意此处 \(M'\) 为约束的个数 \(+1\) 即矩阵的行数,并非题目中的询问个数),所以若设执行 \(\operatorname{pivot}\) 操作的次数为 \(k\),则算法的复杂度为 \(\operatorname{O}(kNM)\),显然无法通过本题。

然而上述分析中不难发现,本题的特殊之处在于 \(M'=3\),即约束只有两个,于是根据线性规划的对偶原理不难将包含 \(N\) 个变量的原问题转化为只包含 \(2\) 个变量的对偶问题

\[\min z = Sx+Ty\\ s.t.\left\{ \begin{aligned} A_1x+B_1y\geq C_1\\ A_2x+B_2y\geq C_2\\ \vdots\\ A_nx+B_ny\geq C_n\\ x,y\in\R \end{aligned} \right. \]

而解法也要做出一些改变,因为单纯形法的复杂度在问题转化前后并没有差别。

在大部分人入门线性规划时就用过二元的线性规划做例题,很经典地,二元的线性规划问题可以通过做出所有的 \(n\) 条直线 \(A_ix+B_iy-C_i=0(i\in[1,n],i\in\Z)\) 分割出的半平面可行域,找到所有半平面的交集,问题就得到化简,变为在交集中找到一点,使得 \(Sx+Ty\) 最小。

处理细节方面考虑将询问离线,按照 \(S,T\) 对询问进行排序并处理。

这样处理的复杂度为 \(\operatorname{O}(n\log n)\),足以通过本题。

总结

对于线性规划问题,若一般方法无法求解,应该考虑将其转化,一般的转化方法为转化为对偶问题。这一题也提示做题者不应忽视简单的案例,二元线性规划最基本的作图这一解法也可以解决难题。

posted @ 2023-08-25 16:15  Happy-Pig-Orz  阅读(4)  评论(0编辑  收藏  举报