文章

24

粉丝

27

获赞

117

访问

4.4k

头像
矩形个数 题解:前缀和加滑动窗口,O(r²c)的时间复杂度
P1959 华东师范大学2021年机试
发布于2025年3月16日 00:01
阅读数 151

#include <bits/stdc++.h>
using namespace std;

int main() {
    int r, c, n, k, x, y, sum = 0;
    cin >> r >> c >> n >> k;
    vector<vector<int>> a(r, vector<int>(c, 0));
    vector<vector<int>> dp(r + 1, vector<int>(c + 1, 0));

    // 读取坐标并填充矩阵
    for (int i = 0; i < n; i++) {
        cin >> x >> y;
        a[x - 1][y - 1] = 1;
    }

    // 构建二维前缀和数组
    for (int i = 1; i <= r; i++) {
        for (int j = 1; j <= c; j++) {
            dp[i][j] = dp[i - 1][j] + dp[i][j - 1] - dp[i - 1][j - 1] + a[i - 1][j - 1];
        }
    }

    // 枚举所有行范围(top, bottom),优化为滑动窗口,不优化也行4个for循环,O(r²c²)时间复杂罢了也能ac
    for (int top = 1; top <= r; top++)...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发