「LibreOJ β Round #4」框架 [bitset]

题面

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;	
}
posted @ 2019-04-11 19:15  hjmmm  阅读(133)  评论(0编辑  收藏  举报