• POJ 2441 Arrange the Bulls


    状压DP。

    dp[i][j]表示前i头牛选完,状态j中为1的篮子选完的方案数。

    #include <cstdio>
    #include <cstring>
    #include <vector>
    using namespace std;
    
    const int maxn=21;
    int n,m;
    vector<int> g[maxn];
    int dp[2][1<<maxn];
    
    int main()
    {
        while(~scanf("%d%d",&n,&m))
        {
            for(int i=0;i<maxn;i++) g[i].clear();
            for(int i=1;i<=n;i++)
            {
                int p; scanf("%d",&p);
                while(p--)
                {
                    int tmp; scanf("%d",&tmp); tmp--;
                    g[i].push_back(tmp);
                }
            }
    
            int f=0;
            for(int i=0;i<=(1<<m);i++) dp[f][i]=0;
    
            for(int i=0;i<g[1].size();i++)
                dp[f][1<<g[1][i]]=1;
    
            for(int i=2;i<=n;i++)
            {
                f=f^1;
                for(int j=(1<<m)-1;j>=0;j--)
                {
                    dp[f][j]=0;
                    if(dp[f^1][j]==0) continue;//这个优化不加会TLE
                    for(int k=0;k<g[i].size();k++)
                    {
                        if(((1<<g[i][k])&j)==0)
                            dp[f][(1<<g[i][k])|j]+=dp[f^1][j];
                    }
                }
            }
    
            int ans=0;
            for(int i=0;i<(1<<m);i++) ans+=dp[f][i];
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    playbook配置不同系统版本的yum源配置
    使用playbook部署lamp
    ansible常用模块
    部署Ansible
    Ansible介绍与安装
    lamp
    mysql主从
    mysql进阶命令
    mysql基础命令
    Dockerfile制作http镜像(以alpine做底层镜像为例)
  • 原文地址:https://www.cnblogs.com/zufezzt/p/5471012.html
Copyright © 2020-2023  润新知