题解
2025-01-01 17:36:12
发布于:广东
12阅读
0回复
0点赞
不多,生成所有可能,一一遍历
#include<bits/stdc++.h>
using namespace std;
bool chk(const vector<int> &c,const vector<vector<int>> &a,const vector<char> &o,int m)
{
int n=c.size();
for (long long i=0;i<a.size();i++)
{
int cnt=0;
for (int num:a[i])
{
if (c[num-1])
cnt++;
}
if (o[i]=='o')
{
if (cnt<m)
return false;
}
else if (cnt>=m)
return false;
}
return true;
}
int cc(int n,const vector<vector<int>> &a,const vector<char> &o,int m)
{
int total=1<<n,cnt=0;
for (int i=0;i<total;i++)
{
vector<int> c(n);
for (int j=0;j<n;j++)
{
if (i&(1<<j))
c[j]=1;
else
c[j]=0;
}
if (chk(c,a,o,m))
cnt++;
}
return cnt;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n,q,m;
cin >> n >> q >> m;
vector<vector<int>> a(q);
vector<char> o(q);
for (int i=0;i<q;i++)
{
int k;
cin >> k;
a[i].resize(k);
for (int j=0;j<k;j++)
cin >> a[i][j];
cin >> o[i];
}
cout << cc(n,a,o,m);
return 0;
}
这里空空如也
有帮助,赞一个