MnZn袜子状压WA30pts求调
查看原帖
MnZn袜子状压WA30pts求调
605945
luo_xiaoran楼主2024/6/22 09:09

除#1,#2,#3之外全WA

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e8;
int ans,n,m,full,num[20],dp[2][4105];
bool pd[4105][4105];
signed main(){
	scanf("%lld%lld",&n,&m);full=(1<<m)-1;
	for(int i=1;i<=n;++i)
		for(int j=1,a;j<=m;++j)
			scanf("%lld",&a),num[i]<<=1,num[i]|=a;
	for(int x=0;x<=full;++x)
		if(!(x&(x<<1)))
			for(int y=0;y<=full;++y)
				if(!((y&(y<<1))||(x&y))&&!pd[x][y])
					pd[x][y]=pd[y][x]=1;
	for(int x=0;x<=full;++x)
		if(pd[0][x]&&(x|num[1])==num[1])
			++dp[1][x];
	for(int i=2;i<=n;++i)
		for(int x=0;x<=full;++x)
			if(pd[0][x]&&(x|num[i-1])==num[i-1])
				for(int y=0;y<=full;++y)
					if(pd[x][y]&&(y|num[i])==num[i])
						dp[i&1][y]+=dp[(i-1)&1][x],dp[i&1][y]%=mod;
	for(int x=0;x<=full;++x)
		ans+=dp[n&1][x],ans%=mod;
	printf("%lld",ans);
	return 0;
}
2024/6/22 09:09
加载中...