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

    ______________________________________________________________

    和上一题差不多,注意初始化与判断即可

    #include<bits/stdc++.h>
    using namespace std;
    long long int n,kk,tot,can[4096],dp[11][1096][121],cnt[4096];
    long long ans;
    int main()
    {
        cin>>n>>kk;
        for(int i=0;i<=(1<<n)-1;i++)
        if((!(i&(i<<1)))){can[++tot]=i;    
        int q=i;
        while(q){if(q%2==1){cnt[i]++;}q>>=1;}
        }
        for(int j=1;j<=tot;j++)dp[1][can[j]][cnt[can[j]]]=1;
        for(int i=2;i<=n;i++)
        for(int j=1;j<=tot;j++)
        for(int k=1;k<=tot;k++)
        {if((can[j]&can[k])||((can[j]<<1)&can[k])||((can[j]>>1)&can[k]))continue;
        for(int t=0;t<=kk;t++)dp[i][can[j]][t+cnt[can[j]]]+=dp[i-1][can[k]][t];}
        for(int i=1;i<=tot;i++)ans+=dp[n][can[i]][kk];
        cout<<ans;
    }
  • 相关阅读:
    POJ 1511
    POJ 1125
    POJ 2240
    POJ 1459
    POJ 1274
    POJ 1789
    POJ 2485,1258
    POJ 1236
    POJ 1273
    Ruby on Rails 观后感
  • 原文地址:https://www.cnblogs.com/SFWR-YOU/p/11261565.html
Copyright © 2011-2022 走看看