acwing 327. 玉米田

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了acwing 327. 玉米田相关的知识,希望对你有一定的参考价值。

327. 玉米田

题意:

m * n的土地,有的土地不育,有的可以种植,要求相邻的土地不能同时种植玉米,问有多少种种植方式

题解:

状压dp,先存每一行可能的状态,然后状态转移,注意相邻不能同时种植除了左右还有上下

代码:

#include <bits/stdc++.h>
using namespace std;
const int P=1e9;
int a[15][15],f[15],h[5010],dp[15][5010],ans;
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
            f[i]=(f[i]<<1)+a[i][j];
        }
    dp[0][0]=1;
    for(int i=0;i<(1<<m);i++)h[i]=((i&(i<<1))==0)&&((i&(i>>1))==0);
    for(int i=1;i<=n;i++)
        for(int j=0;j<(1<<m);j++)
            if(h[j]&&((f[i]&j)==j))
                for(int k=0;k<(1<<m);k++)
                    if((j&k)==0)dp[i][j]=(dp[i][j]+dp[i-1][k])%P;
    for(int i=0;i<(1<<m);i++)ans=(ans+dp[n][i])%P;
    cout<<ans;
    return 0;
}

以上是关于acwing 327. 玉米田的主要内容,如果未能解决你的问题,请参考以下文章

AcWing第一场周赛

SCOI2015 方伯伯的玉米田

SCOI2015 方伯伯的玉米田

[SCOI2014]方伯伯的玉米田

玉米 10条染色体长度

3594: [Scoi2014]方伯伯的玉米田