【线段树】牛客 Practice for KD Tree (二维线段树/树套树)
Practice for KD Tree 题意: 一个 \(n*n\) 矩阵 \(A\) ,有 \(m_1\) 个操作:给 \(x_1\;x_2\;y_1\;y_2\;w\) ,对所有 \(A_{ij}\) ( \(i\in[x_1,x_2]\) 且 \(j\in[y_1,y_2]\) )加上 \(w\) ; 有 \(m_2\) 个询问:给 \(x_1\;x_2\;y_1\;y_2\) ,求出 \(A_{ij}\) ( \(i\in[x_1,x_2]\) 且 \(j\in[y_1,y_2]\) )的最大值。 输入: 第 \(1\) 行 \(3\) 个整数 \(n\;m_1\;m_2\) ( \(1≤n≤2000,1≤m_1≤5*10^4,1≤m_2≤5*10^5\) ); 之后 \(m_1\) 行,每行 \(5\) 个整数: \(x_1\;x_2\;y_1\;y_2\;w\) ( \(1≤x_1≤x_2≤n,1≤y_1≤y_2≤n,1≤w≤10^9\) ); 之后 \(m_2\) 行,每行 \(4\) 个整数: \(x_1\;x_2\;y_1\;y_2\) ( \(1≤x_1≤x_2≤n,1≤y_1≤y_2≤n\) ); 输出: 输出m2行,每行一个整数 官方题解: n小,所以可以用 \(O(n^2)\) 计算出矩阵。然后可以用二维线段树求最值。 个人积累: