比赛 |
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;
}