60pts求助 WA on #3 #5 #8 #10
查看原帖
60pts求助 WA on #3 #5 #8 #10
911545
yshs楼主2024/7/31 15:15
#include<bits/stdc++.h>
#pragma GCC optmize(3)
#define int long long
#define lowbit(x) ((x)&(-x))
using namespace std;
int m,n;
constexpr int MOD = 100000000;
int pic[15][15],ans;
int dp[15][1<<15];
int g[15];

signed main() {
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin  >> n >> m;
	for(int i=1; i<=n; ++i) {
		for(int j=1; j<=m; ++j) {
			int t;
			cin >> t;
			if(t == 1) g[i] += (1<<(j-1));
		}
	}	
	dp[0][0] = 1;
	for(int i=1;i<=n;++i){
		for(int a=0;a<(1<<m);++a){
			if( (!(a&(a>>1))) && (!(a&(a<<1)) && (((g[i-1] & a )== a))) ){
				for(int b=0;b<(1<<m);++b){
					if((a&b) || (b&(b>>1)) || (b&(b<<1)) || ((g[i] & b )!= b)) continue;
//					cout << i <<' ' << a <<'  '<< b;
					dp[i][b] = (dp[i][b] + dp[i-1][a]) % MOD;
				}
			}
		}
	}
	for(int i=0;i<(1<<n);++i){
		ans = (ans + dp[n][i]) % MOD;
	}
	cout << ans;
	return 0;
}
2024/7/31 15:15
加载中...