比赛 2024暑假C班集训A 评测结果 AAAAAAAAAA
题目名称 牧场的安排 最终得分 100
用户昵称 小金 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2024-07-10 11:51:37
显示代码纯文本
#include<iostream>
#include<cstdio>
int n,m,a[15],p[1<<15],s;
long long f[15][(1<<15)];
const long long M=100000000;
void chu()
{
	for(int i=0;i<(1<<m);i++)
	{
		if(i&(i<<1)) continue;
		s++;
		p[s]=i;
	}
}
int main()
{
    freopen("cowfood.in","r",stdin);
    freopen("cowfood.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int j=1;j<=n;j++)
	{
		for(int i=m-1;i>=0;i--)
		{
			int x;
			scanf("%d",&x);
			a[j]+=(x<<i);
		}
	}
	chu();
	for(int i=1;i<=s;i++)   
	{
		if(!((p[i]|a[1])==a[1])) continue;
		f[1][p[i]]=1;
	}
	for(int i=2;i<=n;i++)
	{
		for(int j=1;j<=s;j++)
		{
			if(!((p[j]|a[i])==a[i])) continue;  
			for(int k=1;k<=s;k++)
			{
				if(!((p[k]|a[i-1])==a[i-1])) continue;  
				if(p[j]&p[k]) continue;
				f[i][p[j]]=(f[i][p[j]]+f[i-1][p[k]])%M;
			}
		}
	}
	long long ans=0;
	for(int j=1;j<=s;j++)
	{
		ans=(ans+f[n][p[j]])%M;
	}
	printf("%lld",ans);
	return 0;
}