2409. 编辑子矩阵

1000ms 256MB 简单 前缀和与差分
题目描述
有一个 $n \times n$ 大小的方阵,矩阵中的初始值为 $0$。现在有 $k$ 次操作,每次操作会将矩阵中以 $(x_1, y_1)$ 为左上角、$(x_2, y_2)$ 为右下角的子矩阵中的每个数加 $1$。 请输出经过 $k$ 次操作后,方阵中每个元素的值。
输入格式
- 第一行包含两个整数 $n$ 和 $k$ ($n, k \le 1000$)。 - 接下来 $k$ 行,每行包含 $4$ 个整数 $x_1, y_1, x_2, y_2$。 - 数据保证所有坐标均在方阵范围内,且左上角坐标 $\le$ 右下角坐标。
输出格式
- 输出 $n$ 行,每行 $n$ 个整数,代表最终方阵中每个元素的值。
样例 1
输入 (Input)
5 3
2 2 3 3
3 3 5 5
1 2 1 4
输出 (Output)
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1
- $1 \le n, k \le 1000$ - 坐标范围:$1 \le x_1, x_2, y_1, y_2 \le n$ ### **算法提示** - **二维差分**:对于矩形区域修改,直接遍历会达到 $O(k \cdot n^2)$ 复杂度,可能超时。使用二维差分可以将单次修改降至 $O(1)$。 - **还原矩阵**:修改完成后,通过计算二维前缀和还原出原矩阵,总复杂度为 $O(k + n^2)$。
自测终端 stdin → stdout
输入 stdin
CtrlShiftEnter
输出 stdout

                
错误 stderr

                
CtrlEnter提交
自动保存已开启
操作成功
wzs_oj@kernel:~ — wzs-sh
guest@wzsoj:~$
刷新页面 F5
复制 Ctrl+C
粘贴 Ctrl+V
搜索题目
站点公告
今日神谕
CSP 倒计时
排行榜
我的提交
Esc 关闭 Enter 跳转 支持模糊匹配数字