题面

loj

#include <cmath>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <complex>
#include <ctime>
#include <vector>
#include <bitset>
#define mp(x, y) make_pair(x, y)
using namespace std;
const int N = (int)1e3 + 5;
int n, m, ans;
bitset<N> h[N][N], s[N], cur;
int main(){
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i)
        for(int j = 1, x; j < m; ++j)
            scanf("%d", &x), h[i][1][j] = x;//涓嶈兘鐩存帴杈撳叆 
    for(int i = 1; i <= n; ++i)
        for(int j = 2; j < m; ++j)
            h[i][j] = h[i][j - 1] & (h[i][j - 1] >> 1);
    for(int i = 1, x; i < n; ++i)
        for(int j = 1; j <= m; ++j)
            scanf("%d", &x), s[i][j] = x;
    for(int i = 1; i < n; ++i){
        for(int j = i + 1; j <= n; ++j){
            if(j == i + 1) cur = s[i];
            else cur &= s[j - 1];
            ans += (h[i][j - i] & h[j][j - i] & cur & (cur >> (j - i))).count();
        }   
    }
    printf("%d", ans);
    //system("PAUSE");
    return 0;   
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。