求调!QAQ
  • 板块P1578 奶牛浴场
  • 楼主andy22
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/8/3 20:48
  • 上次更新2025/8/4 10:42:06
查看原帖
求调!QAQ
1142264
andy22楼主2025/8/3 20:48
#include <bits/stdc++.h>
using namespace std;

const int N = 5e3 + 5;
int n, m, ans = 0;
char a[N][N];
int h[N][N], l[N][N], r[N][N];
int main() {
    int Q;
    cin >> n >> m >> Q;
    int x, y;
    while(Q--) {
        cin >> x >> y;
        a[x+1][y+1] = 'R';
    }
    for(int i = 1; i <= n+1; i++) {
        for(int j = 1 ; j <= m+1; j++) {
            if(a[i][j] != 'R') {
                a[i][j] = 'F';
            }
            h[i][j] = 1;
            r[i][j] = l[i][j] = j;
        }
    }
    for(int i = 1; i <= n+1; i++) {
        for(int j = 1; j <= m+1; j++) {
            if(a[i][j] == 'F' && a[i][j-1] == 'F') {
                l[i][j] = l[i][j-1];
            }
        }
        for(int j = m; j >= 1; j--) {
            if(a[i][j] == 'F' && a[i][j+1] == 'F') {
                r[i][j] = r[i][j+1];
            }
        }
        for(int j = 1; j <= m+1; j++) {
            if(i > 1 && a[i][j] == 'F') {
                if(a[i-1][j] == 'F') {
                    h[i][j] = h[i-1][j]+1;
                    if(l[i-1][j] > l[i][j]) {
                        l[i][j] = l[i-1][j];
                    }
                    if(r[i-1][j] < r[i][j]) {
                        r[i][j] = r[i-1][j];
                    }
                }
                if((r[i][j] - l[i][j] + 1) * h[i][j] > ans) {
                    ans = (r[i][j] - l[i][j] + 1) * h[i][j];
                }
            }
        }    
    }
    cout << ans;
    return 0;
}
2025/8/3 20:48
加载中...