考虑当前合法的一个点集s,如果他合法,那么一定有一个完备匹配的点集包含这个点集,也就是两边都满足hall定理的话这两边拼起来的点集也满足要求

所以分别状压两边点集用hall定理转移判断当前点集是否合法,然后分别对两边点集的权值和排个序2point扫一下计算答案即可

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=2000005;
int n,m,ln,lm,t,a[N],b[N],f[N],g[N],p[N],q[N],tp,tq,v[25],w[25],c[N];
long long ans;
char s[25];
int main()
{
scanf("%d%d",&n,&m);
ln=(1<<n)-1,lm=(1<<m)-1;
for(int i=1;i<=n;i++)
{
scanf("%s",s+1);
for(int j=1;j<=m;j++)
if(s[j]=='1')
a[(1<<(i-1))]|=(1<<(j-1)),b[(1<<(j-1))]|=(1<<(i-1));
}
for(int i=1;i<=n;i++)
scanf("%d",&w[i]);
for(int i=1;i<=m;i++)
scanf("%d",&v[i]);
scanf("%d",&t);
for(int i=1;i<(1<<20);i++)
c[i]=c[i-(i&(-i))]+1;
for(int s=0;s<=ln;s++)
{
f[s]=1;
int sm=0;
for(int i=1;i<=n;i++)
if(s&(1<<(i-1)))
a[s]|=a[s^(1<<(i-1))],f[s]&=f[s^(1<<(i-1))],sm+=w[i];
f[s]&=(c[a[s]]>=c[s]);
if(f[s])
p[++tp]=sm;//,cerr<<sm<<endl;
}
for(int s=0;s<=lm;s++)
{
g[s]=1;
int sm=0;
for(int i=1;i<=m;i++)
if(s&(1<<(i-1)))
b[s]|=b[s^(1<<(i-1))],g[s]&=g[s^(1<<(i-1))],sm+=v[i];
g[s]&=(c[b[s]]>=c[s]);
if(g[s])
q[++tq]=sm;
}
sort(p+1,p+1+tp);
sort(q+1,q+1+tq);
// for(int i=1;i<=tp;i++)
// cerr<<p[i]<<" ";cerr<<endl;
// for(int i=1;i<=tq;i++)
// cerr<<q[i]<<" ";cerr<<endl;
for(int i=1,j=tq+1;i<=tp;i++,ans+=tq-j+1)
while(j-1>0&&p[i]+q[j-1]>=t)
j--;
printf("%lld\n",ans);
return 0;
}

最新文章

  1. 获取URL最后一个 ‘/’ 之后的字符
  2. 控制对话框风格的activity的显示大小与位置
  3. Docker version 1.12.5建立registry私库
  4. nodejs基于art-template模板引擎生成
  5. PHP Simulation HTTP Request(undone)
  6. 黄聪:JS实现复制到剪贴板功能,兼容所有浏览器(转)
  7. spring替代方法
  8. dede调用第一张大图,非缩略图
  9. 解决ArcGIS Android Could not find class &#39;com.esri.android.map.MapView&#39;问题
  10. Linux 命令 - less: LESS IS MORE
  11. ZOJ 2392 The Counting Problem(模拟)
  12. cygwin下用mysql c api连接数据库详解
  13. IBM Websphere 说明文档
  14. JSP慕课网之application、page、pageContext、config、exception
  15. 『最长等差数列 线性DP』
  16. Spring Boot事务管理(上)
  17. 如何利用 Jmeter 测试上传文件
  18. HDU4772(杭州赛区)
  19. 【转】燃烧吧,TestMice!
  20. ny525 一道水题

热门文章

  1. JS 中的面向对象
  2. 20145239杜文超 《Java程序设计》第2周学习总结
  3. 分享知识-快乐自己:Hibernate 中的 HQL 语句的实际应用
  4. insert …select …带来的死锁问题
  5. 英特尔&#174; Software Guard Extensions 教程系列:第一部分,英特尔&#174; SGX 基础
  6. listen 73
  7. (转)C/C++——auto,static,register,extern用法
  8. [acm]HDOJ 1200 To and Fro
  9. Java之类加载器(Class Loader)
  10. 查询oracle 数据库 SQL语句执行情况