求助,3个大样例全过,交上去全wa
查看原帖
求助,3个大样例全过,交上去全wa
310929
王思远123456楼主2023/11/8 21:33
#include <bits/stdc++.h>
using namespace std;
#define N 1008

#define mod 998244353

int n, m, T, f, c, _, hang[N][N], lie[N][N], pc, pv;
char p[N][N];
int main() {
    scanf("%d%d", &T, &_);
    while (T--) {
        for (int i = 1; i <= 1001; i++) {
            memset(hang[i], 0, sizeof(hang[i]));
            memset(lie[i], 0, sizeof(lie[i]));
        }
        scanf("%d%d%d%d", &n, &m, &f, &c);
        for (int i = 1; i <= n; i++) {
            scanf("%s", p[i] + 1);
            //			for(int j=1;j<=m;j++)
            //			printf("%c ",p[i][j]);
        }
        for (int i = n; i >= 1; i--) {
            for (int j = m; j >= 1; j--)
                if (p[i][j] == '0')
                    hang[i][j] = hang[i][j + 1] + 1;
            for (int j = n; j >= 1; j--)
                if (p[i][j] == '0')
                    lie[i][j] = lie[i + 1][j] + 1;
        }
        //		for(int i=1;i<=n;i++)
        //		{
        //			for(int j=1;j<=m;j++)
        //			printf("%d ",hang[i][j]);
        //			printf("\n");
        //		}
        for (int j = 1; j <= m - 1; j++) {
            for (int i = 1; i < n - 1; i++) {
                int cnt = 1;
                if (p[i][j] != '1' && hang[i][j] > 1 && p[i + 1][j] != '1' && p[i + 2][j] != '1')
                    for (int k = i + 2; p[k][j] != '1' && k <= n; k++) {
                        pc = pc + (hang[i][j] - 1) * (hang[k][j] - 1) % mod;
                        // printf("%d %d %d\n",hang[k][j],k,j);
                        cnt++;
                    }

                if (p[i][j] == '0' && hang[i][j] > 1 && p[i + 1][j] == '0' && p[i + 2][j] == '0')
                    for (int k = 2; k <= cnt && i + k <= n; k++) {
                        pv = pv + (hang[i][j] - 1) * (hang[i + k][j] - 1) * (lie[i + k][j] - 1) % mod;
                    }
            }
        }
        printf("%d %d\n", pc % mod, pv % mod);
    }
    return 0;
}
2023/11/8 21:33
加载中...