给n<=50个长度m<=1000的二进制数,记他们为集合T,求满足下面条件的集合S数:令$M=2^m-1$,1、$a \epsilon S \Rightarrow a \ \ xor \ \ M \epsilon S$;2、$a \epsilon S,b \epsilon S \Rightarrow a \ \ and \ \ b \epsilon M$;3、$T \subseteq S$;4、S中每个数都<=M。答案膜1e9+7。

首先不看这T个数,先想想自由状态下有多少个S。由条件1可知,对m个二进制位,S中一定有一个数使得这一位不为空。那么经过若干的and操作就可以把含这一位(i)的数变小变小再变小,变到最小记f(i)。可以发现$f(x) \neq f(y) \Rightarrow f(x) \ \ and \ \ f(y) =0$。如果不这样,那么$f(x) \ \ and \ \ (f(y)\ \ xor \ \ M)$可以得到一个比f(x)更小的,且在x这一位为1的数,就矛盾。

那么自由状态下就相当于把m个位置划分成若干个集合,每个集合里的x的f(x)共享,比如{2,4}对应f(2)=f(4)=1010,问有多少方案。这就是贝尔数了。

贝尔数性质:转自此

n^2递推的话还有:令$B(0,0)=1,B(i,0)=B(i-1,i-1),B(i,j)=B(i-1,j-1)+B(i,j-1)$,则$B(i,0)$就是第i个贝尔数。

OK现在加入T的限制。在T的限制下,令R(i)表示数位i在n个数的状态,就是R(i)的第j位表示第j个数的第i位是1还是0。R(i)不同的两位,在分配集合时绝对绝对不能分在一个集合,因为如果$R(x) \neq R(y),f(x) = f(y)$,那么f(x)与那个导致两个R不相同的数and一下,就可以得到一个更小的f(x),矛盾。所以根据R(i)的不同把位分成若干组,每组算一个贝尔数即可。

 //#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<map>
//#include<bitset>
#include<algorithm>
//#include<cmath>
using namespace std; int n,m;
#define LL long long
LL state[],str[][];
map<LL,int> mp;
const int mod=1e9+;
int main()
{
scanf("%d%d",&m,&n); LL x;
for (int i=;i<n;i++)
for (int j=;j<m;j++)
scanf("%1lld",&x),state[j]|=(x<<i);
for (int i=;i<m;i++) mp[state[i]]++;
str[][]=;
for (int i=;i<=m;i++)
{
str[i][]=str[i-][i-];
for (int j=;j<=i;j++) str[i][j]=str[i][j-]+str[i-][j-],str[i][j]-=str[i][j]>=mod?mod:;
}
int ans=;
for (map<LL,int>::iterator i=mp.begin();i!=mp.end();i++) ans=1ll*ans*str[(*i).second][]%mod;
printf("%d\n",ans);
return ;
}

贝尔数--Codeforces908E. New Year and Entity Enumeration的更多相关文章

  1. 【CodeForces】908 E. New Year and Entity Enumeration

    [题目]E. New Year and Entity Enumeration [题意]给定集合T包含n个m长二进制数,要求包含集合T且满足以下条件的集合S数:长度<=m,非和与的结果都在集合中. ...

  2. 【CF908E】New Year and Entity Enumeration 位运算+DP

    [CF908E]New Year and Entity Enumeration 题意:给定$M=2^m-1$,我们称一个集合S是好的,当且仅当它满足:1.$\forall a\in S,a\  \ma ...

  3. 贝尔数(来自维基百科)& Stirling数

    贝尔数   贝尔数以埃里克·坦普尔·贝尔(Eric Temple Bell)为名,是组合数学中的一组整数数列,开首是(OEIS的A000110数列):   Bell Number Bn是基数为n的集合 ...

  4. HDU 2512 一卡通大冒险(第二类斯特林数+贝尔数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2512 题目大意:因为长期钻研算法, 无暇顾及个人问题,BUAA ACM/ICPC 训练小组的帅哥们大部 ...

  5. bzoj 3501 PA2008 Cliquers Strike Back——贝尔数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角形 p^2 地预处理 p 以内的贝尔数.可以模(mod-1)(它是每个分解下 ...

  6. bzoj 3501 PA2008 Cliquers Strike Back —— 贝尔数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3501 用贝尔三角预处理贝尔数,拆模数并在 \( p \) 进制下使用公式,因为这样每次角标增 ...

  7. hdu2643&&hdu2512——斯特林数&&贝尔数

    hdu2643 题意:$n$ 个人的排名情况数($n \leq 100$) 分析:考虑 $n$ 个有区别的球放到 $m$ 个有区别的盒子里.无空盒的方案数为 $m!\cdot S(n, m)$. 这题 ...

  8. hdu4767 Bell——求第n项贝尔数

    题意 设第 $n$ 个Bell数为 $B_n$,求 $B_n \ mod  \ 95041567$.($1 \leq  n  \leq  2^{31}$) 分析 贝尔数的概念和性质,维基百科上有,这里 ...

  9. Good Bye 2017 E. New Year and Entity Enumeration

    先按照绿点进行分块 第一个绿点和最后一个绿点之后很好处理不说了 两个绿点之间的讨论: 有两种方案 1:红(蓝)点和绿点顺序连接,距离为相邻绿点距离(也就是双倍绿点距离) 2:红(蓝)点和绿点的点阵中寻 ...

随机推荐

  1. 216 Combination Sum III 组合总和 III

    找出所有可能的 k 个数,使其相加之和为 n,只允许使用数字1-9,并且每一种组合中的数字是唯一的.示例 1:输入: k = 3, n = 7输出:[[1,2,4]]示例 2:输入: k = 3, n ...

  2. SharePoint2013升级SP1后,运行配置向导报错:未注册sharepoint服务

    SharePoint Server 2013 升级SP1后,需要重新运行配置向导,但是运行过程中报错:未注册sharepoint服务. 日志详细错误信息: 已引发类型为 Microsoft.Share ...

  3. SpringMvc如何将Url 映射到 RequestMapping (二)

    昨天简单分析了Springmvc 中 RequestMapping 配置的url和请求url之间的匹配规则.今天详细的跟踪一下一个请求url如何映射到Controller的对应方法上 一.入口 org ...

  4. hihocoder1705 座位问题

    思路: 使用堆模拟.复习了priority_queue自定义结构体比较函数的用法. 实现: #include <bits/stdc++.h> using namespace std; ty ...

  5. YOLOv3模型识别车位图片的测试报告(节选)

    1,YOLOv3模型简介 YOLO能实现图像或视频中物体的快速识别.在相同的识别类别范围和识别准确率条件下,YOLO识别速度最快. 官网:https://pjreddie.com/darknet/yo ...

  6. taskctl的后台字符界面登录不了解决办法

    今天在使用taskctl的designer时,十多分钟挂了2次,每次挂了之后就签不出来了,只能等半小时,然后在taskctl的QQ群里咨询了,给的解决方案是 http://www.taskctl.co ...

  7. 并发-5CAS与AQS

    juc: java.util.concurrent 锁: 悲观锁:写的比较多,对数据的增删改,读(查)少.Lock 乐观锁:反之,读多写少.版本 并发编程之 CAS 的原理 什么是CAS CAS (c ...

  8. No-6.If语句

    判断(if)语句 01. 开发中的应用场景 生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?…… 程序中的判断 if 今天发工资: 先还信用卡的钱 if 有剩余: 又可 ...

  9. [转载]在网页中插入media,RealPlayer等控件

    [转载]在网页中插入media,RealPlayer等控件 (2012-11-02 20:27:43) 转载▼ 标签: 转载   原文地址:在网页中插入media,RealPlayer等控件作者:Mo ...

  10. [C#] 对List进行分组排序后输出

    Student 类: public class Student { public int ID { get; set; } public string Name { get; set; } publi ...