题意很简单,n头牛,m个位置,每头牛有各自喜欢的位置,问安排这n头牛使得每头牛都在各自喜欢的位置有几种安排方法。

2000MS代码:

#include <cstdio>
#include <cstring>
int dp[(<<)+];
int one[( << ) + ];
//用来数出状态为i时1的个数,具体到这个题中就是
//状态为i时有多少头牛已经安排好牛棚
void CountOne(int m)
{
for(int i=; i< ( << m); ++i)
{
int num=;
for(int j=; j< m; ++j)
{
if( (i & ( << j)) != )//i的第j位置是否为一
++num;
}
one[i] = num;
}
}
int main()
{
// freopen("in.cpp","r",stdin);
int n,m;
scanf("%d%d",&n,&m);
CountOne(m);
memset(dp,,sizeof(dp));
dp[] = ; //一头牛都没有安排,状态为0的满足条件的方案数为1
for(int i=; i<=n; ++i)
{
int cnt; //每头牛喜欢住的牛棚数
scanf("%d",&cnt);
while(cnt--)
{
int k; //该牛棚编号
scanf("%d",&k);
--k;//使得牛棚编号为 0 ~ m-1
for(int j=; j< ( << m); ++j)
{
if((j & ( << k)) != && one[j] == i) //这个状态已经安排好了i头牛,且第k个牛棚安排的是第i头牛
dp[j] += dp[j-(<<k)];
}
}
}
// 最终结果为安排了n头牛的状态满足条件的方案数的总和
int ans=;
for(int j=; j< ( << m ); ++j)
{
if(one[j] == n)
{
ans += dp[j];
}
}
printf("%d\n",ans);
return ;
}

90MS

#include <stdio.h>
#include <string.h> int map[][];
int now[(<<)+]; int main()
{
int i,j,n,m,k,x,p,ret;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(map,,sizeof(map));
for (i=;i<n;i++)
{
scanf("%d",&k);
while(k--)
{
scanf("%d",&x);
x--;//0~m-1编号
map[i+][x]=;
}
}
if (n>m)
{
printf("0\n");
continue;
}
memset(now,,sizeof(now));
now[]=;
for (i=;i<n;i++)
{
for (j=(<<m)-;j>=;j--)
{
if (now[j]==) continue;
for (k=;k<m;k++)
{
if ((j & (<<k))!=) continue;//判断j的第k的位置为1
if (map[i+][k]==) continue;//在k的棚没有位置
p=(j | (<<k));//j的第k的位置变1
now[p]+=now[j];
}
now[j]=;
}
}
ret=;
for (i=;i<(<<m);i++)
{
ret+=now[i];
}
printf("%d\n",ret);
}
return ;
}

最新文章

  1. 针对每种Windows Server 操作Excel、Word等Office组件遇到“ComException&quot;、”80070005“等COM错误的解决方案大汇总
  2. JVM参数OmitStackTraceInFastThrow:不打印NullPointerException异常堆栈
  3. css 一些灵动性的小方法
  4. HDU 5965 枚举模拟 + dp(?)
  5. 大数的乘法(C++)
  6. (转)SQL Server 的事务和锁(二)-Range S-S锁
  7. 红黑树、B(+)树、跳表、AVL等数据结构,应用场景及分析,以及一些英文缩写
  8. iOS网络HTTP、TCP、UDP、Socket 知识总结
  9. 深入理解linux网络技术内幕读书笔记(八)--设备注册与初始化
  10. poj 1523 SPF(tarjan求割点)
  11. 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示
  12. java之equals 与 == 的区别
  13. Vue-admin工作整理(十): Vuex-Actions(模拟接口请求实现组件字段更新)
  14. 【SVN】CentOS7.0下搭建SVN服务器
  15. Segment set(线段并查集)
  16. Async Await异步调用WebApi
  17. Matlab警告消息消除
  18. POJ 2987 - Firing - [最大权闭合子图]
  19. 环境变量.JAVA_HOME
  20. servlet中关于下载

热门文章

  1. Java通过JDBC 进行Dao层的封装
  2. apache server和tomcat集群配置三:水平集群下的tomcat集群配置
  3. JAVA之数组队列
  4. oracle系统函数(日期函数)
  5. 【总结整理】json数据请求简化版理解(祺哥的成果)
  6. Blender 基础 骨架-02 骨架的各种呈现方式
  7. BMP是可以保存alpha通道的。
  8. Entity Framework Tutorial Basics(38):Explicit Loading
  9. (转)C# TextBox ReadOnly / Enabled 时,后台无法取值问题
  10. Kotlin第一篇 Hello Kotlin以及简单介绍。