Loading

P3397 地毯

题目链接

https://www.luogu.com.cn/problem/P3397

题目思路

直接暴力求解,枚举\(x_1 \sim x_2\)\(y_1 \sim y_2\)
或者二维差分

题目代码

暴力

#include <iostream>
#include <algorithm>

using namespace std;
const int N = 1010;
int s[N][N];
int n, m;

int main()
{
    cin >> n >> m;
    while(m -- )
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        for(int i = x1; i <= x2; i ++ )
            for(int j = y1; j <= y2; j ++ )
                s[i][j] ++ ;
    }
    
    for(int i = 1; i <= n; i ++ )
    {
        for(int j = 1; j <= n; j ++ )
            cout << s[i][j] << ' ';
        puts("");
    }
    return 0;
}

二维差分

#include <iostream>
#include <algorithm>

using namespace std;
const int N = 1010;
int s[N][N];
int n, m;

int main()
{
    cin >> n >> m;
    while(m -- )
    {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        s[x1][y1] ++ ;
        s[x2 + 1][y1] -- ;
        s[x1][y2 + 1] -- ;
        s[x2 + 1][y2 + 1] ++ ;
    }
    
    for(int i = 1; i <= n; i ++ )
    {
        for(int j = 1; j <= n; j ++ )
        {
            s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
            cout << s[i][j] << ' ';
        }
        puts("");
    }
    return 0;
}
posted @ 2022-03-24 20:30  vacilie  阅读(48)  评论(0)    收藏  举报