题意

给一张$n\times m$二分图,带点权,问有多少完美匹配子集满足权值和大于等于$t$


这里有一个结论:对于二分图$\mathbb{A}$和$\mathbb{B}$集合,如果子集$A \in \mathbb{A},B \in \mathbb{B}$,且$A,B$分别是完美匹配的子集,那么$A \cup B$属于一个完美匹配

有了这个结论之后,考虑单侧,枚举子集$S$,利用霍尔定理判定$S$是否是完美匹配,并通过dp转移状态,记录下单侧所有满足条件的权值和,然后两侧一起考虑累加得到答案

时间复杂度$O((n+m)2^{max(n,m)})$

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 1 << 20;
int n, m, a[N + 5], b[N + 5], cnt[N + 5], L[N + 5], R[N + 5], fl[N + 5], fr[N + 5], t;
char str[100][100];
vector<int> g1, g2;
int main() {scanf("%d%d", &n, &m);for(int i = 0; i < n; ++i) scanf("%s", str[i]);for(int i = 0; i < n; ++i) scanf("%d", &a[i]);for(int i = 0; i < m; ++i) scanf("%d", &b[i]);for(int i = 0; i < n; ++i) {for(int j = 0; j < m; ++j) {if(str[i][j] == '1') {L[i] |= (1 << j); R[j] |= (1 << i);}}}scanf("%d", &t);for(int i = 0; i <= max((1 << n), (1 << m)); ++i) cnt[i] = cnt[i>>1] + (i & 1);for(int s = 0; s < (1 << n); ++s) {int now = 0, v = 0;fl[s] = 1;for(int i = 0; i < n; ++i) {if((s >> i) & 1) {v += a[i]; now |= L[i];fl[s] &= fl[s ^ (1 << i)];}}if(fl[s] && cnt[s] <= cnt[now]) g1.push_back(v);else fl[s] = 0;}for(int s = 0; s < (1 << m); ++s) {int now = 0, v = 0;fr[s] = 1;for(int i = 0; i < m; ++i) {if((s >> i) & 1) {v += b[i]; now |= R[i];fr[s] &= fr[s ^ (1 << i)];}}if(fr[s] && cnt[s] <= cnt[now]) g2.push_back(v);else fr[s] = 0;}sort(g1.begin(), g1.end());LL ans = 0;for(int i = 0; i < g2.size(); ++i) {ans += g1.size() - (lower_bound(g1.begin(), g1.end(), t - g2[i]) - g1.begin());}cout << ans << endl;return 0;
}
/*
3 3
010
111
010
1 2 3
8 5 13
21*/
/*
3 2
01
11
10
1 2 3
4 5
8*/

转载于:https://www.cnblogs.com/ogiso-setsuna/p/8455391.html

【Codeforces】Gym 101173B Bipartite Blanket 霍尔定理+状压DP相关推荐

  1. Educational Codeforces Round 13 E. Another Sith Tournament 状压dp

    E. Another Sith Tournament 题目连接: http://www.codeforces.com/contest/678/problem/E Description The rul ...

  2. Codeforces Round #585 (Div. 2) E. Marbles 状压dp + 逆序对

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑数列最终的状态一定是相同颜色在一起,所以我们发现他的颜色是有顺序的!显然可以用状压dpdpdp来枚举颜色的顺序,但是又有问题了,你怎么确定当前这个 ...

  3. 【CodeForces - 580D】Kefa and Dishes (状压dp)

    题干: kefa进入了一家餐厅,这家餐厅中有n个菜(0<n≤18),kefa对第i个菜的满意度为ai(0≤ai≤10^9),并且对于这n个菜有k个规则,如果kefa在吃完第xi个菜之后吃了第yi ...

  4. Codeforces Gym 100676G Training Camp 状压dp

    http://codeforces.com/gym/100676 题目大意是告诉你要修n门课,每门课有一个权值w[i], 在第k天修该课程讲获得k*w[i]的学习点数,给出了课程与先修课程的关系,要修 ...

  5. Gym - 101853E E. Maximum Sum (状压DP)

    原题地址:https://codeforces.com/gym/101853/problem/E 题意:给出一个n*n的矩阵,矩阵中每一个格子都有一个权值,选择一个格子就能拿到当前的权值,但是同时就不 ...

  6. CodeForces - 1550E Stringforces(二分+状压dp)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的字符串,只包含前 kkk 个小写字母以及通配符 ???,现在可以将通配符替换成任意的前 kkk 个字母中的一个.设 f[i]f[i]f[i] 为 ...

  7. Codeforces Beta Round #8 C. Looking for Order 状压dp

    题目链接: http://codeforces.com/problemset/problem/8/C C. Looking for Order time limit per test:4 second ...

  8. 「CTSC2017」吉夫特(Gift) (Lucas定理,状压DP)

    题面 链接 简单的题目,既是礼物,也是毒药. B 君设计了一道简单的题目,准备作为 gift 送给大家. 输入一个长度为 n n n 的数列 a 1 , a 2 , ⋯ , a n a_1, a_2, ...

  9. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

最新文章

  1. nexus搭建maven私服
  2. CSS基础学习-5.CSS属性_字体文本文本装饰
  3. dell服务器清空系统空间,PowerEdge 服务器上的内存配置错误。
  4. 原理竟然是这!2021年字节跳动74道高级程序员面试
  5. GDCM:Dicom文件Empty Mask的测试程序
  6. VTK:IO之ReadPLY
  7. jQuery学习整理 (12)
  8. std::wstring 转为 QString
  9. 认识事件冒泡和事件捕获
  10. python3.4 or 3.x xlwt replaced with xlwt-future
  11. java对读写文件进行操作
  12. 《HiWind企业快速开发框架实战》(2)使用HiWind创建自己的项目
  13. java中double类型占几个字节_Java中的单双精度数据类型分别占几个字节?
  14. python自动化看什么书_《Python编程快速上手:让繁琐工作自动化》(异步图书出品)...
  15. 存储单元,字,MAR,存储字长,存储字,存储容量
  16. SAP-GR/IR的理解
  17. NVL和COALESCE的区别
  18. 2021-09-30-THZ-前置
  19. SPF动物实验室设计,SPF动物实验室装修SICOLAB
  20. 工作5年观察:快速在职场崛起,拼这10个认知

热门文章

  1. SQL SERVER 用户自定义函数如何定义.
  2. Mybatis逆向工程(生成实体类)开发指南
  3. Linux系统简单实验操作rm
  4. 量化策略回测BoolC
  5. 被阿里带火的数据中台:“大中台、小前台”战略是什么?
  6. 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python
  7. java实现文件上传和文件查看、下载
  8. 利用Pandas库进行简单的数据分析(数据清洗)
  9. 职称计算机 宜兴,关于报送2020年经济、石油化工工程、 电子信息工程和工艺美术高级专业技术资格评审材料的通知...
  10. java魔方游戏代码_java swing实现的魔方小游戏源码附带视频指导运行教程