bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛状压dp
Posted lokiii
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛状压dp相关的知识,希望对你有一定的参考价值。
设f[i][j]为奶牛选取状态为i,最后一头选的为j,转移直接f[k][(1<<(k-1)|i]+=f[j][i]
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,p[20],a[20];
long long f[20][1<<16],ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
p[i]=1<<(i-1);
}
for(int i=1;i<=n;i++)
f[i][p[i]]=1;
for(int i=0;i<=(1<<n)-1;i++)
for(int j=1;j<=n;j++)
if(p[j]&i)
for(int k=1;k<=n;k++)
if(!(p[k]&i)&&abs(a[k]-a[j])>m)
f[k][p[k]|i]+=f[j][i];
for(int i=1;i<=n;i++)
ans+=f[i][(1<<n)-1];
printf("%lld\n",ans);
return 0;
}
以上是关于bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛状压dp的主要内容,如果未能解决你的问题,请参考以下文章
bzoj1231[Usaco2008 Nov]mixup2 混乱的奶牛*
bzoj 1231 [Usaco2008 Nov]mixup2 混乱的奶牛
BZOJ1231[Usaco2008 Nov]mixup2 混乱的奶牛 状压DP
bzoj1231 [Usaco2008 Nov] mixup2 混乱的奶牛