GYM 101173B: Bipartite Blanket

博客介绍了如何解决一个关于二分图的问题,其中点集合法的条件是每个点都属于某一匹配。内容涉及利用二分图的性质和Hall定理,通过枚举X和Y中的状态来判断点集是否属于完美匹配,并统计权值和大于t的点集数量。
摘要由CSDN通过智能技术生成

http://codeforces.com/group/NVaJtLaLjS/contest/257177/attachments
题意:
有一个二分图,一个点集合法当且仅当:该点集的【每个点】都属于【某一匹配】。
问这些合法的点集当中,有多少个权值和大于t.
思路:
有一个性质可以证明:如果属于X的一个点集v1属于某个完美匹配,同时属于Y的一个点集v2也存在于完美匹配中,那么v1+v2一定也属于某个完美匹配中。
那么完美分别枚举X和Y中的状态,根据hall定理(https://www.cnblogs.com/dummyummy/p/10311769.html),判断所有点集是不是属于某个完美匹配,最后一块统计。

#include<bits/stdc++.h>
using namespace std;

int n,m,wx[30],wy[30],coverx[1<<21],covery[1<<21],cnt[1<<21],t;
bool fx[1<<21],fy[1<<21];
vector<int> x,y;

void solve(int n,int *wx,int *coverx,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值