luogu_1879 [USACO06NOV]玉米田Corn Fields

#include <cstdio>
#include <iostream>
#define reg register
using namespace std;
const int N=14;
const int S=(1<<13)+10;
const int mod=1e8;
int n,m,f[N][S],a[N],s,g[S],t[N],ans;

int main(){
    scanf("%d%d",&n,&m);
    for(reg int i=1;i<=n;i++)
        for(reg int j=1;j<=m;j++){
            int x;
            scanf("%d",&x);
            t[i]=(t[i]<<1)+x;
        }
    s=1<<m;
    for(reg int i=0;i<s;i++)g[i]=(!(i<<1&i) && !(i>>1&i));
    f[0][0]=1;
    for(reg int i=1;i<=n;i++)
        for(reg int j=0;j<s;j++)
            if(g[j] && (j&t[i])==j)
                for(reg int k=0;k<s;k++)
                    if(!(j&k))f[i][j]+=f[i-1][k];
    for(reg int i=0;i<s;i++)ans+=f[n][i],ans%=mod;
    printf("%d\n",ans);
    return 0;
}

  

posted @ 2017-10-16 13:28  wqtnb_tql_qwq_%%%  阅读(147)  评论(0编辑  收藏  举报