GDKOI 2025 Day2 D
题目大意
给定 \(n\times n\) 矩阵 \(A\),\(q\) 次查询,每次查询给定 \(l_1,l_2,r_1,r_2\) 问 \(A[l_1:r_1][l_2:r_2]\) 颜色数是否不多于 \(2\)。
- \(n\leq 10^3,q\leq 2\times 10^6,A_{i,j}\leq 10^6\)。
题解
设 \(f(x,y)=[x\neq y](\min(x,y)V+\max(x,y))\)。
考虑预处理出 \(U_{i,j}=f(A_{i,j},A_{i+1,j}),L_{i,j}=f(A_{i,j},A_{i,j+1})\),那么询问转为查询 \(U[l_1:r_1-1][l_2,r2]\) 和 \(D[l_1:r_1][l_2,r2-1]\) 中非 \(0\) 数种类数是否恰好为 \(1\)。
至此已经可以各显神通了,这里讲一下线性做法。
考虑维护出矩形内所有非 \(0\) 数的 \(\sum x_i^0,\sum x_i^1,\sum x_i^2\) 项,这些项显然在矩形上是有可减性的。
对于一次询问,求出 \(y=\dfrac {\sum x_i^1}{\sum x_i^0},z=\dfrac {\sum x_i^2}{\sum x_i^0}\)。根据基本不等式有 \(y^2\leq z\),而等号取到当且仅当所有 \(x_i\) 相等,即种类数为 \(1\)。
至此我们可以在 \(O(n^2)/O(1)\) 的时间得知 \(U\) 和 \(D\) 中非零数的种类数是否为 \(1\)。
总时间复杂度 \(O(n^2+q)\)。

浙公网安备 33010602011771号