Loading

P8501 [NOI2022] 二次整数规划问题 题解

很妙的题。

\(K=3\)

首先有一些变量会被限制为 \(x_i\in[1,1]\) 或者 \(x_i\in[3,3]\),那么它们的值已经确定。同时如果有 \(|x_i-x_j|\leq0\)\(x_i\) 确定,那么 \(x_j\) 也确定。这样我们就得到了一些变量必须为 \(1\)\(3\),那么可以猜想除了这些变量剩下的都取 \(2\)

可以发现这样确实是对的。因为我们已经处理了 \(|x_i-x_j|\leq0\) 的限制,所以剩下的全取 \(2\) 是合法的。同时全取 \(2\) 不会使 \(G\) 减小(因为 \(|2-1|=|3-2|=1\)),而且会使 \(c_2\) 增大,故答案更优。

所以 \(x_i\) 的取值与 \(v_2\) 无关,时间复杂度 \(O(n+m+q)\)

\(K=4\)

\(K=3\) 时,我们只考虑了 \(|x_i-x_j|\leq0\) 的约束,这是因为 \(|2-1|=|3-2|=1\)。现在 \(K=4\),需要考虑更一般化的情况。可以发现,第二类约束对第一类约束的影响是,如果 \(x_i\in[l_i,r_i]\)\(|x_i-x_j|\leq b\),那么有 \(x_j\in [l_i-b,r_i+b]\),可以看作是将 \([l_j,r_j]\) 限制得更紧。事实上,将左右端点分开看这就是差分约束,可以 \(O(n+m)\)(将 \(K\) 看作常数)地解决。

进行完上面的过程后,也会得到一些必须为 \(1\)\(4\) 的变量。那么和 \(K=3\) 类似,剩下的变量必然取 \(2,3\) 之一,证明也是将所有 \(1\) 改成 \(2\)\(4\) 改成 \(3\) 不劣。

观察到序列的权值和顺序没有关系,只取决于每种数的出现次数。剩下这些变量无论取 \(2\) 还是取 \(3\),这些变量之间的贡献不变,而 \(x_i=2\) 对其他已经确定的变量的贡献和 \(x_j=2\) 是一样的,所以这些未确定的变量要么同时取 \(2\) 要么同时取 \(3\)

时间复杂度也是 \(O(n+m+q)\)

\(K=5\)

首先还是通过差分约束处理限制,那么仍然有结论:除了必须取 \(1\)\(5\) 的变量,其他变量只会取 \(2,3,4\)。那么事实上,剩下的变量中,再除去必须取 \(2,3,4\) 中特定某个的,取值范围只有三种可能 \(\{2,3\},\{3,4\},\{2,3,4\}\),称这些变量为“自由变量”。而二元约束则等价于对于某些 \(i,j\),有 \(\{x_i,x_j\}\neq\{2,4\}\),或者 \(x_i=x_j\)。其中,第二种约束比较好处理,因为这意味着此时 \(x_i,x_j\) 的取值范围也相同,可以直接当作一个等价类处理。

对于 \(Q\) 较小的情况,我们先将必须相等的变量看作一个等价类,然后先算上所有的 \(v_2+v_3+v_4\)\(G\), 问题就变成了每个等价类可以选 \(2,3,4\),分别有 \(C_i(v_3+v_4),C_i(v_2+v_4),C_i(v_2+v_3)\) 的代价,而且某两个等价类如果一个选 \(2\) 一个选 \(4\)\(C_iC_j\times10^6\)\(G\) 减小)或者 \(+\infin\)(两个等价类之间存在二元约束)的代价,然后问题转化成 [HNOI2013] 切糕,可以用网络流解决。可以证明在本题中网络流的复杂度是 \(O(n^2\log{n}+nm)\) 的。

回顾 \(K=3,4\) 的分析,\(K=3\) 时对于任意的 \(v_2\)\(\{x_i\}\) 的取值相同,\(K=4\) 时也只存在两种可能取值,而且本题的询问数 \(Q\) 相对于 \(n\) 较大,这启发我们预处理出所有可能的序列 \(\{x_i\}\),然后每次询问取枚举每种可能计算答案。

对于没有二元约束的情况(特殊性质 \(A\)),\(x\) 的可能性依旧很少。可以证明,对于取值范围一样的自由变量,它们一定会取到同样的值,也就是至多有 \(2\times2\times3=12\) 种可能的序列。

可惜的是二元限制的存在使得可能的序列不再是 \(O(1)\) 种。求出所有序列是不太可能也没必要的,因为我们实际上只关心 \(c_1,c_2,c_3,c_4,c_5\)。根据我们的分析,\(c_1,c_5\) 已经是定值,且 \(c_1+c_2+c_3+c_4+c_5=n\) 也是定值,所以我们需要的信息可以表示为 \((c_2,c_4)\),记此时的权值为 \(W(c_2,c_4)\),那么可以得到:

\[W(c_2,c_4)=W(0,0)+c_2(v_2-v_3+2Vc_1)+c_4(v_4-v_3+2Vc_5)-2Vc_2c_4\\ V=10^6 \]

需要注意的是可能并不存在 \(x\) 的取值使得 \((0,0)\),这里的 \(W(0,0)\) 只是令 \(c_2=c_4=0\) 计算出来的权值以方便化简,不一定存在实际意义。

上式中的变量只有 \(c_2,c_4,c_2c_4\),所以我们可以计算出常数 \(C_1,C_2,C_3\),使得 \(W(c_2,c_4)-W(0,0)=-2V(c_2-C_1)(c_4-C_2)+C_3\),所以只需要最小化 \((c_2-C_1)(c_4-C_2)\)

\((c_2,c_4)\) 放到二维平面上,那么每次询问就是将这个点集向左平移 \(C_1\),向下平移 \(C_2\) 后,求横纵坐标乘积最小的点。

接下来考察哪些 \((c_2,c_4)\)(平移之前)可以取到。

先分别考虑两维,\(c_2\) 最小值 \(L_x\) 就是所有被固定为 \(2\) 的变量数量,最大值 \(R_x\) 是所有取值范围含 \(2\) 的变量数量,包括固定为 \(2\) 的变量和取值范围为 \(\{2,3\},\{2,3,4\}\) 的自由变量。\(L_y,R_y\) 同理。

所以所有能取到的点一定在 \(([L_x,R_x],[L_y,R_y])\) 这个矩形中。并且由于所有自由变量都可以取到 \(3\),所以这个矩形的三个顶点 \((L_x,L_y),(L_x,R_y),(R_x,L_y)\) 一定是可以取到的。

对于平移后 \((c_2-C_1,c_4-C_2)\) 构成的矩形,有几种情况:

  • 矩形全部在第一象限,则此时一定是左下角最优。
  • 矩形和二、四象限有交,那么此时一定是左上角或右下角最优。
  • 矩形全部在第三象限,此时如果右上角是可以取到的,当然是右上角最好,但是事实上 \((R_x,R_y)\) 不一定能取到。

对于第三种情况,一个自然的想法是所有合法的点构成一个四分之一凸壳。证明考虑不在凸壳上的点,它和原点的线段会与凸壳相交,这个交点更优。而这个交点在一条凸壳的边上,又可以通过二次函数证明调整到边的两个端点之一会更优。

平移后的凸壳也是原来的凸壳平移而来,所以现在只需要求出可能取到的点集的右上四分之一凸壳即可。

一个可能的想法是枚举或二分求出每个 \(c_2\) 对应的最大 \(c_4\),但没有简单有效检验方法。还是考虑前面的网络流,那么就需要解决两个问题:1.如何给变量赋权建图。2.跑 \(O(n)\) 次网络流的复杂度也无法接受,必须要缩减次数。考虑到网络流次数不太可能少于凸包点数,我们希望凸包的点数不能太多。这里有一个经典结论:所有横纵坐标都是 \([0,n]\) 内整数的点集 \(1/4\) 凸包大小上界是 \(O(n^{\frac{2}{3}})\)

那么现在的问题只剩下如何求出一个未知点集的凸包,我们希望求解方式是以某种顺序找出凸包上的每个点,最好能一次网络流就能找出凸包上的一个新点。

考虑分治法。已经知道凸壳的最左点 \(A(x_0=L_x,y_0=R_y))\) 和最右点 \(B(x_1=R_x,y_1=L_y))\),那么我们找出点集内的点 \(P(c_2,c_4)\) 满足 \(|\overrightarrow{AB}\times\overrightarrow{AP}|\) 最大,也就是找到 \(AB\) 最远且在 \(AB\) 外侧的点,那么 \(P\) 一定在凸包上,再分治 \((A,P)\)\((P,B)\) 即可。

\[\begin{equation} \begin{aligned} |\overrightarrow{AB}\times\overrightarrow{AP}|&=(x_1-x_0)(c_4-y_0)-(y_1-y_0)(c_2-x_0)\\ &=(x_1-x_0)c_4+(y_0-y_1)c_2-y_0(x_1-x_0)+x_0(y_1-y_0)\\ &=(c_2+c_3+c_4)(x_1-x_0+y_0-y_1)-y_0(x_1-x_0)+x_0(y_1-y_0)-((x_1-x_0)c_2+(x_1-x_0+y_0-y_1)c_3+(y_0-y_1)c_4) \end{aligned} \end{equation} \]

注意到 \(c_2+c_3+c_4=0,x_1-x_0\geq0,y_0-y_1\geq0\),所以这也是[HNOI2013] 切糕的形式,只要将等价类合并再加上二元约束(代价为 \(+\infin\))即可转化为最小割,然后构造出一组最小割方案即可求出对应的 \(c_2,c_4\)

预处理复杂度 \(O(n^{\frac{2}{3}}(n^2\log{n}+nm))\),询问复杂度 \(O(qn^{\frac{2}{3}})\)

posted @ 2025-04-23 16:10  complexor  阅读(20)  评论(0)    收藏  举报