这题比赛的时候坑了我9发都不过当时用的string 但是比赛完了之后原代码只是把string换成char就过了莫名其妙!!!!
这题用到了二进制,暴力一下更快
以下是我代码
#include <cstdio>
#include <cstring>
#include<algorithm>
#include<map>
#include<string>
#include<iostream>
using namespace std;
int t;
int main()
{
scanf("%d",&t);
while(t--)
{
int n,m;
map<string,int>mp;
scanf("%d%d",&n,&m);
char a[350][350];
int q;
scanf("%d",&q);
for(int i=0; i<q; i++)
{
scanf("%s",a[i]);
}
char b[350][350];
int p;
for(int i=0; i<m; i++)
{
scanf("%d",&p);
for(int j=0; j<p; j++)
scanf("%s",b[j]);
for(int j=0; j<q; j++)
for(int k=0; k<p; k++)
{
if(!strcmp(a[j],b[k]))
mp[a[j]]+=1<<i;
}
}
for(int i=0; i<n; i++)
{
int sum=0;
for(int j=0; j<m; j++)
{
int k;
scanf("%d",&k);
if(k==1)
sum+=1<<j;
}
int flag=0,u=0;
for(int j=0; j<q; j++)
{
if(mp[a[j]]==sum)
{
flag++;
u=j;
}
}
if(flag==1)
{
cout<<a[u]<<endl;
}
else
cout<<"Let's go to the library!!"<<endl;
}
}
}