zoukankan      html  css  js  c++  java
  • 互不侵犯

    几乎是板子。

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    int f[10][100][1000],ans;
    int n,k,cnt,iab[20],num[1000];
    int can[1000],bai[20],pd[1000];
    void dfs(int x){
        if(x==n+1){
            cnt++;
            for(int i=1;i<=n;i++)
                can[cnt]=2*can[cnt]+bai[i];
            for(int i=1;i<=n;i++)
                iab[i]=(bai[i]||bai[i-1]||bai[i+1]);
            for(int i=1;i<=n;i++)
                pd[cnt]=2*pd[cnt]+iab[i];
            for(int i=1;i<=n;i++)
                num[cnt]+=bai[i];
            return;
        }
        bai[x]=0;
        dfs(x+1);
        if(bai[x-1]==0){
            bai[x]=1;
            dfs(x+1);
        }
    }
    signed main(){
        cin>>n>>k;
        dfs(1);
        //for(int i=1;i<=cnt;i++)
        //    printf("%d %d
    ",can[i],pd[i]);
        f[0][0][1]=1;
        for(int i=1;i<=n;i++){
            f[i][0][1]=1;
            for(int j=1;j<=k;j++)
                for(int p=1;p<=cnt;p++){
                    for(int q=1;q<=cnt;q++)
                        if(num[p]+num[q]<=j&&(can[p]&pd[q])==0)
                            f[i][j][p]+=f[i-1][j-num[p]][q];
                    //printf("%d %d %d %d
    ",i,j,p,f[i][j][p]);
                }
        }
        for(int i=1;i<=cnt;i++)
            ans+=f[n][k][i];
        printf("%lld
    ",ans);
        return 0;
    }

    深深地感到自己的弱小。

  • 相关阅读:
    Redis内存回收策略
    7、IMS
    6、端局、汇接局、关口局、长途局
    5、IMS网元
    4、IMS
    3、NAT
    2、SIP
    1、B2BUA
    九、数据库——sql server 2008导入excel
    六十三、android pad
  • 原文地址:https://www.cnblogs.com/syzf2222/p/12423473.html
Copyright © 2011-2022 走看看