zoukankan      html  css  js  c++  java
  • 【状压dp】Bzoj1231 [Usaco2008 Nov]mixup2 混乱的奶牛

    Description

    混乱的奶牛 [Don Piele, 2007] Farmer John的N(4 <= N <= 16)头奶牛中的每一头都有一个唯一的编号S_i (1 <= S_i <= 25,000). 奶牛为她们的编号感到骄傲, 所以每一头奶牛都把她的编号刻在一个金牌上, 并且把金牌挂在她们宽大的脖子上. 奶牛们对在挤奶的时候被排成一支"混乱"的队伍非常反感. 如果一个队伍里任意两头相邻的奶牛的编号相差超过K (1 <= K <= 3400), 它就被称为是混乱的. 比如说,当N = 6, K = 1时, 1, 3, 5, 2, 6, 4 就是一支"混乱"的队伍, 但是 1, 3, 6, 5, 2, 4 不是(因为5和6只相差1). 那么, 有多少种能够使奶牛排成"混乱"的队伍的方案呢?

    Solution

    一开始看错题也是非常地囧

    然后就是很水的状压了

    f[S][i]已排列集合为S最后为i的方案数

    最近好想水usaco>.<

    Code

    用cmath库竟然CE是怎么回事QwQ

    #include<cstdio>
    #include<cstdlib>
    #define ll long long
    using namespace std;
    const int maxn=16;
    
    int n,k,a[maxn];
    ll f[1<<maxn][maxn];
    
    int main(){
        scanf("%d%d",&n,&k);
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(int i=0;i<n;i++)
            f[1<<i][i]=1;
            
        for(int S=1;S<(1<<n);S++)
            for(int i=0;i<n;i++) if(S&(1<<i)) 
                for(int j=0;j<n;j++)
                    if(!(S&(1<<j))&&abs(a[j]-a[i])>k)
                        f[S^(1<<j)][j]+=f[S][i];
        ll ans=0;
        for(int i=0;i<n;i++)
            ans+=f[(1<<n)-1][i];
        printf("%lld
    ",ans);
        return 0;
    }
  • 相关阅读:
    openwrt 相关文章
    负载均衡相关文章
    Today's Progress
    Rodrigues formula is beautiful, but uneven to sine and cosine. (zz Berkeley's Page)
    Camera Calibration in detail
    Fundamental Matrix in Epipolar
    Camera Calibration's fx and fy do Cares in SLAM
    FilterEngine::apply
    FilterEngine 类解析——OpenCV图像滤波核心引擎(zz)
    gaussBlur
  • 原文地址:https://www.cnblogs.com/xkui/p/4559177.html
Copyright © 2011-2022 走看看