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)\)

posted @ 2025-12-29 15:01  JoeyJiang  阅读(45)  评论(0)    收藏  举报