zoukankan      html  css  js  c++  java
  • poj 3254 Corn Field

    Description

    Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number of squares. Regrettably, some of the squares are infertile and can’t be planted. Canny FJ knows that the cows dislike eating close to each other, so when choosing which squares to plant, he avoids choosing squares that are adjacent; no two chosen squares share an edge. He has not yet made the final choice as to which squares to plant.

    Being a very open-minded man, Farmer John wants to consider all possible options for how to choose the squares for planting. He is so open-minded that he considers choosing no squares as a valid option! Please help Farmer John determine the number of ways he can choose the squares to plant.

    Input

    Line 1: Two space-separated integers: M and N
    Lines 2..M+1: Line i+1 describes row i of the pasture with N space-separated integers indicating whether a square is fertile (1 for fertile, 0 for infertile)
    Output

    Line 1: One integer: the number of ways that FJ can choose the squares modulo 100,000,000.
    Sample Input

    2 3
    1 1 1
    0 1 0
    Sample Output

    9
    Hint

    Number the squares as follows:
    1 2 3
    4

    There are four ways to plant only on one squares (1, 2, 3, or 4), three ways to plant on two squares (13, 14, or 34), 1 way to plant on three squares (134), and one way to plant on no squares. 4+3+1+1=9.
    Source

    USACO 2006 November Gold

    题意:农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。

    遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是John不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。

    John想知道,如果不考虑草地的总块数,那么,一共有多少种种植方案可供他选择?(当然,把新牧场完全荒废也是一种方案)

    。。。。。。。。。。。
    此题看数据就知道是状压dp,f数组是记录每一行的状态是否存在贫瘠土地,mapp数组记录每一种状态是否有相邻的牛。
    状态转移方程:dp[i][j]+=dp[i-1][k]; if(j&k==0)。
    k是枚举出的上一行状态,j&k是保证两行没有相邻的牛。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int N = 12;
    const int mod = 100000000;
    int dp[N+5][1<<N],m,n,a[N+5][N+5],ans,f[N+5];
    bool mapp[1<<N];
    int main() {
        scanf("%d%d",&n,&m);
        for(register int i=1; i<=n; i++)
            for(register int j=1; j<=m; j++) {
                scanf("%d",&a[i][j]);
                f[i]=(f[i]<<1)+a[i][j];
            }
        for(register int i=0; i<1<<m; i++) {
            bool flag=1;
            int cnt=2;
            for(register int j=0; j<m; j++) {
                if(i>>j&1) {
                    if(cnt==1) {
                        flag=0;
                        break;
                    } else
                        cnt=1;
                } else
                    cnt++;
            }
            if(flag)  mapp[i]=1;
    //      cout<<i<<" "<<mapp[i]<<endl;
        }
        dp[0][0]=1;
        for(register int i=1; i<=n; i++)
            for(register int j=0; j<1<<m; j++) {
                if(mapp[j] && ((f[i]&j)==j)) {
                    for(register int k=0; k<1<<m; k++)
                        if((j&k)==0){
                            dp[i][j]+=dp[i-1][k];
                            dp[i][j]%=mod;
                        }
                }
            }
        for(register int i=0; i<1<<m; i++)
            ans+=dp[n][i],ans%=mod;
        ans%=mod;
        printf("%d",ans);
    }
  • 相关阅读:
    当使用了相对路径 <base href="<%= basePath %>" /> 后,全局都只能使用相对路径
    springmvc controller转发setViewName时找不到路径的问题以及转发视图时出现找不到样式的问题
    springmvc 使用jq传递json数据时出现415错误
    eclipse
    渗透测试记录
    在CentOS上安装Mysql使用yum安装mysql
    centos 安装 jdk
    wget和curl方式下载JDK
    Python程序的首行
    打印标准目录
  • 原文地址:https://www.cnblogs.com/sdfzsyq/p/9677153.html
Copyright © 2011-2022 走看看