欢迎来到SFWR的博客

P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows

——————————————————————————————————————————————————————————

我真睿智

重叠变量名查了十多分钟的错

很好的状压题,无论是隐形的表示还有计数

————————————————————————————

#include<bits/stdc++.h>
using namespace std;
long long int n,kk,ans,a[17],f[17][1<<17],cows[17];
int main()
{
    cin>>n>>kk;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];;
        f[i][cows[i]=1<<(n-i)]=1;
    }
    for(int i=1;i<=(1<<n)-1;i++)
    for(int j=1;j<=n;j++)
    if(i&cows[j])
    for(int k=1;k<=n;k++)
    if((j!=k)&&(abs(a[k]-a[j])>kk))f[j][i]+=f[k][i^cows[j]];    
    for(int i=1;i<=n;i++)ans+=f[i][(1<<n)-1];
    cout<<ans;
}

 

posted @ 2019-07-31 23:01  SFWR  Views(111)  Comments(0Edit  收藏  举报