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,