码迷,mamicode.com
首页 > 其他好文 > 详细

[USACO06NOV]玉米田$Corn \ \ Fields$ (状压$DP$)

时间:2018-07-25 11:25:36      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:cal   inline   技术   转移   max   ||   状压   ios   www.   

#\(\mathcal{\color{red}{Description}}\)

\(Link\)

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

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

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

#\(\mathcal{\color{red}{Solution}}\)

\(emmm\)这题是我上周做的……害得我都忘了当时犯了什么纸张错误= =

一看就是状压\(DP\)

我发现原来状压DP的转移都贼简单……\(emmm\)我的意思是暂时,起码迄今为止我做过的状压题里都挺简单(做过的题\(\leq 5\))……

然后我们可以考虑一开始把\(0\)的位置记成\(1\),然后我们判断的时候只要看它&起来会不会为真就行……

有个坑点就是

    for(i = 1; i <= N; i ++)
        for(j = 1; j <= M; j ++){
            cin >> c ;
            if (c == ‘0‘)
            Line[i] |= (1 << (j - 1)) ;
        }

这是读入……然后我把\(1 << (j - 1)\)给写成了\(1 << j\)还觉得挺对\(emmmm\)

嗯,实践出真知,劳动创造财富左移运算是移动几位……嘤嘤嘤比如你\(1\)左移\(3\)位其实其实来到的是第\(4\)位上……

哇塞我可真是个蒟蒻…… 技术分享图片

#include <cmath>
#include <cstdio>
#include <iostream>

using namespace std ;
typedef long long ll ;
const int MAXN = 210 ;
const ll mod = 100000000 ;
char c ; ll ans, i, j, k, Mx ;
ll N, M, Line[20], dp[20][4080] ;

int main(){
    cin >> N >> M ;
    dp[0][0] = 1 ;
    Mx = (1 << M) - 1 ;
    for(i = 1; i <= N; i ++)
        for(j = 1; j <= M; j ++){
            cin >> c ;
            if (c == ‘0‘)
            Line[i] |= (1 << (j - 1)) ;
        }
    for(i = 1; i <= N; i ++)
        for(j = 0 ; j <= Mx; j ++){
            if((j & Line[i]) || (j & (j >> 1)) ) continue ;
            for(k = 0 ; k <= Mx; k ++){
                if((j & k) || (k & Line[i - 1]) || (k &(k >> 1))) continue ;
                dp[i][j] = (dp[i][j] + dp[i - 1][k]) % mod ;
            }
        }
    for(i = 0; i <= Mx; i ++) ans = (ans + dp[N][i]) % mod ;
    cout << ans % mod ;
}

[USACO06NOV]玉米田$Corn \ \ Fields$ (状压$DP$)

标签:cal   inline   技术   转移   max   ||   状压   ios   www.   

原文地址:https://www.cnblogs.com/pks-t/p/9364528.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!