设为首页 加入收藏

TOP

POJ 2411 Mondriaan's Dream (状态压缩DP)
2015-11-21 01:37:00 来源: 作者: 【 】 浏览:8
Tags:POJ 2411 Mondriaan' Dream 状态 压缩

题意:给定一个矩阵,只能放1*2的木块,问将这个矩阵完全覆盖的不同放法有多少种。

分析:横着放为11,竖着放为竖着的01,所以判断相邻两行是否被完全覆盖:只需判断两行状态合集(j | k)是否是满的, 两种状态是否有冲突(j & k)。

第一行直接预处理就行。

?

#include    
#include    
#include    
#include    
using namespace std;  
__int64 dp[12][1 << 11]; //横着放为11,竖着放为0   
                       //                    1   
int buff[1 << 11];  
int n,m;  
__int64 ans;  
  
bool judge(int b) {  
    bool flag = 1;  
    while(b) {  
        if(b & 1) {  
            if((b >> 1) & 1) b = b >> 2;  
            else {  
                flag = 0;  
                b = b >> 1;  
            }  
        } else b = b >> 1;  
        if(flag == 0) return 0;  
    }  
    return flag;  
}  
void getbuff() {  
    int total = 1 << 11;  
    for(int i=0; i 
 

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇提取用','分割的单词 下一篇UVA 10041 Vito's Family (中..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: