zoukankan      html  css  js  c++  java
  • [SCOI2005]互不侵犯King

    据说这是一道状压DP。。。然而蒟蒻并不太会状压。。。所以此文为现学现卖。。。QVQ

    这个题我们只要按正常思维先预存一下。。。

    然后枚举一下就可以了。。。好像没有什么思维上的梗。。。

    直接上代码好了。。。

    呆码:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    long long dp[11][110][350];
    int f[110],sum[110];
    int n,k,top;
    
    inline bool check1(int x)
    {
        if(x & x<<1) return 0;
        else return 1;
    }
    
    inline void init()
    {
        int maxn=(1<<n)-1;
        for(int i=0;i<=maxn;i++)
            if(check1(i))
            {
                f[++top]=i;
                int t=i;
                while(t) sum[top]+=t%2,t>>=1;
            }
    }
    
    int main()
    {
        scanf("%d%d",&n,&k);
        init();
        for(int i=1;i<=top;i++)
            if(sum[i]<=k)
                dp[1][i][sum[i]]=1;
        for(int i=2;i<=n;i++)
            for(int j1=1;j1<=top;j1++)
                for(int j2=1;j2<=top;j2++)
                {
                    if(f[j1] & f[j2]) continue;
                    if(f[j1] & f[j2]<<1) continue;
                    if(f[j1]<<1 & f[j2]) continue;
                    for(int j3=1;j3<=k;j3++)
                        if(sum[j1]+j3<=k)
                            dp[i][j1][sum[j1]+j3]+=dp[i-1][j2][j3];
                }
        long long ans=0;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=top;j++)
                ans+=dp[i][j][k];
        printf("%lld
    ",ans);
    }
    代码
  • 相关阅读:
    http协议概述
    博客写起来一周年了~
    angular与vue的应用对比
    一些前端的小问题
    详解vue的数据binding原理
    闲的没事水一贴!
    关于angular1与angular2的应用区别
    angularjs优化方略
    rxjs学习笔记
    HTML5移动开发学习笔记
  • 原文地址:https://www.cnblogs.com/zzzyc/p/8969212.html
Copyright © 2011-2022 走看看