zoukankan      html  css  js  c++  java
  • HDU 1400 Mondriaan's Dream

    状压DP。

    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    
    int h,w;
    long long dp[15][(2<<12)+10];
    bool flag[(2<<12)+10],c[(2<<11)+10];
    int b[15];
    
    void dfs(int p){
        if(p==w){
            int st=0;
            for(int i=0;i<w;i++) st=st+c[i]*b[i];
            flag[st]=1; return;
        }
        if(c[p]==1) dfs(p+1);
        else{
            if(p+1<w) {c[p]=1; c[p+1]=1;dfs(p+1);c[p]=0; c[p+1]=0;}
            dfs(p+1);
        }
    }
    
    int main()
    {
        b[0]=1; for(int i=1;i<=11;i++) b[i]=2*b[i-1];
        while(~scanf("%d%d",&h,&w))
        {
            if(h==0&&w==0) break;
            dfs(0); memset(dp,0,sizeof dp);
            for(int i=0;i<=(1<<w)-1;i++) dp[0][i]=flag[i];
            for(int i=1;i<h;i++)
            {
                for(int j=0;j<=(1<<w)-1;j++)
                {
                    if(dp[i-1][j]==0) continue;
                    int st=j^((1<<w)-1);
                    for(int k=0;k<=(1<<w)-1;k++)
                    {
                        if((flag[k]==0)||((st&k)!=0)) continue;
                        dp[i][st|k]+=dp[i-1][j];
                    }
                }
            }
            printf("%lld
    ",dp[h-1][(1<<w)-1]);
        }
        return 0;
    }
  • 相关阅读:
    JVM(三)初始化
    JVM(四)类加载机制
    JVM(一)内存分配
    java的日期时间处理(待更新)
    Java----finally
    FFmpeg(一)
    SqlServer
    MySql 8.0.12安装、配置
    Android的各大框架整理
    互联网协议入门
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5468945.html
Copyright © 2011-2022 走看看