给你几个人,然后下i行对应的是回答出来第i个问题的人,最后询问回答出来了哪几个问题的是谁。
用一个map,存名字和数字,回答出的问题编号也转化为2进制,然后转化为10进制,这样的话每个人回答出的问题就对应的是一个数字,询问的时候也把2进制的串转化为10进制,这样的话比对就比较方便。对于每次询问,有唯一的人就输出名字,否则。。。嘿嘿嘿
#include <bits/stdc++.h>
using namespace std;
map<string,int>s;
string sx[220];
int x[220][220];
int main()
{
//freopen("in.txt","r",stdin);
cin.tie(0);
cout.tie(0);
int t,n,q,c,d;
cin >> t;
while(t--)
{
cin >> n >> q;
memset(x,0,sizeof(x));
s.clear();
cin >> c;
for(int i = 0;i < c; i++)
{
cin >> sx[i];
s[sx[i]] = 0;
}
for(int i = 0;i < q; i++)
{
cin >> d;
for(int j = 0;j < d; j++)
{
string tmp;
cin >> tmp;
s[tmp] += pow(2.0,i);
}
}
while(n--)
{
int ans = 0,flag = 0;
for(int i = 0;i < q; i++)
{
int tp;
cin >> tp;
if(tp == 1)
{
// cout << i << " " << tp << " ";
ans += pow(2.0,i);
}
}
string anss;
for(int i = 0;i < c; i++)
{
if(s[sx[i]] == ans)
{
anss = sx[i];
flag++;
}
}
if(flag == 1)
{
cout << anss << endl;
continue;
}
cout << "Let's go to the library!!" << endl;
}
}
return 0;
}
标签:tmp,Kind,进制,int,ZOJ,cin,tp,++,What From: https://blog.51cto.com/u_16131191/6356111