ZOJ 3960 What Kind of Friends Are You?(读题+思维)
题目链接
:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5592
Japari Park is a large zoo home to extant species, endangered species, extinct species, cryptids and some legendary creatures. Due to a mysterious substance known as Sandstar, all the animals have become anthropomorphized into girls known as Friends.
Kaban is a young girl who finds herself in Japari Park with no memory of who she was or where she came from. Shy yet resourceful, she travels through Japari Park along with Serval to find out her identity while encountering more Friends along the way, and eventually discovers that she is a human.
However, Kaban soon finds that it's also important to identify other Friends. Her friend, Serval, enlightens Kaban that she can use some questions whose expected answers are either "yes" or "no" to identitfy a kind of Friends.
To be more specific, there are n Friends need to be identified. Kaban will ask each of them q same questions and collect their answers. For each question, she also gets a full list of animals' names that will give a "yes" answer to that question (and those animals who are not in the list will give a "no" answer to that question), so it's possible to determine the name of a Friends by combining the answers and the lists together.
But the work is too heavy for Kaban. Can you help her to finish it?
Input
There are multiple test cases. The first line of the input is an integer T (1 ≤ T ≤ 100), indicating the number of test cases. Then T test cases follow.
The first line of each test case contains two integers n (1 ≤ n ≤ 100) and q (1 ≤ q ≤ 21), indicating the number of Friends need to be identified and the number of questions.
The next line contains an integer c (1 ≤ c ≤ 200) followed by c strings p1, p2, ... , pc (1 ≤ |pi| ≤ 20), indicating all known names of Friends.
For the next q lines, the i-th line contains an integer mi (0 ≤ mi ≤ c) followed by mi strings si, 1, si, 2, ... , si, mi (1 ≤ |si, j| ≤ 20), indicating the number of Friends and their names, who will give a "yes" answer to the i-th question. It's guaranteed that all the names appear in the known names of Friends.
For the following n lines, the i-th line contains q integers ai, 1, ai, 2, ... , ai, q (0 ≤ ai, j ≤ 1), indicating the answer (0 means "no", and 1 means "yes") to the j-th question given by the i-th Friends need to be identified.
It's guaranteed that all the names in the input consist of only uppercase and lowercase English letters.
Output
For each test case output n lines. If Kaban can determine the name of the i-th Friends need to be identified, print the name on the i-th line. Otherwise, print "Let's go to the library!!" (without quotes) on the i-th line instead.
Sample Input
2
3 4
5 Serval Raccoon Fennec Alpaca Moose
4 Serval Raccoon Alpaca Moose
1 Serval
1 Fennec
1 Serval
1 1 0 1
0 0 0 0
1 0 0 0
5 5
11 A B C D E F G H I J K
3 A B K
4 A B D E
5 A B K D E
10 A B K D E F G H I J
4 B D E K
0 0 1 1 1
1 0 1 0 1
1 1 1 1 1
0 0 1 0 1
1 0 1 1 1
Sample Output
Serval
Let's go to the library!!
Let's go to the library!!
Let's go to the library!!
Let's go to the library!!
B
Let's go to the library!!
K
Hint
The explanation for the first sample test case is given as follows:
As Serval is the only known animal who gives a "yes" answer to the 1st, 2nd and 4th question, and gives a "no" answer to the 3rd question, we output "Serval" (without quotes) on the first line.
As no animal is known to give a "no" answer to all the questions, we output "Let's go to the library!!" (without quotes) on the second line.
Both Alpaca and Moose give a "yes" answer to the 1st question, and a "no" answer to the 2nd, 3rd and 4th question. So we can't determine the name of the third Friends need to be identified, and output "Let's go to the library!!" (without quotes) on the third line.
/*
问题
第一个表输入每个人给出每个问题回答,第一个集合中出现的是1,没有出现的是0
第二个表输入需要识别的每个人对于每个问题的回答,结合两张表,看是否存在唯一一个人,
是输出他的名字,否输出Let's go to the library!! 解题思路
先将每个人根据名字进行编号,使用map映照容器更方便,然后制作两张表,两重循环查询即可。
*/
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<map>
using namespace std; void f(int h);
int n,q,c;
map<string,int> namelist;
int list1[][],list2[][];
int OK(int x[],int y[]); int main()
{
int t,i,j,k,m;
string sname;
char name[];
scanf("%d",&t);
while(t--){
scanf("%d%d%d",&n,&q,&c);
namelist.clear();
for(i=;i<c;i++){
scanf("%s",name);
sname=name;
namelist[sname]=i;
} memset(list1,,sizeof(int)**);
for(i=;i<q;i++){
scanf("%d",&m);
for(j=;j<m;j++){
scanf("%s",name);
sname=name;
list1[ namelist[sname] ][i]=;
}
} /*for(i=0;i<c;i++){
for(j=0;j<q;j++){
printf("#%d ",list1[i][j]);
}
printf("\n");
}*/ for(i=;i<n;i++){
for(j=;j<q;j++){
scanf("%d",&list2[i][j]);
}
} /*for(i=0;i<n;i++){
for(j=0;j<q;j++){
printf("@%d ",list2[i][j]);
}
printf("\n");
}*/ for(i=;i<n;i++){
f(i);
}
}
return ;
} int OK(int x[],int y[])
{
int i;
for(i=;i<q;i++){
if(x[i] != y[i])
return ;
}
return ;
} void f(int h)
{
int i,j,k;
int cou=,z=;
for(i=;i<c;i++){
if(OK(list1[i],list2[h])){
z=i;
cou++;
}
} if(cou == ){
map<string,int>::iterator it;
for(it=namelist.begin();it != namelist.end();it++){
if((*it). second == z){
cout<<(*it).first<<endl;
break;
}
}
}
else
printf("Let's go to the library!!\n");
}
ZOJ 3960 What Kind of Friends Are You?(读题+思维)的更多相关文章
- 2017浙江省赛 C - What Kind of Friends Are You? ZOJ - 3960
地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3960 题目: Japari Park is a large zoo ...
- ZOJ 3960 What Kind of Friends Are You? 【状态标记】
题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3960 题意 首先给出 一系列名字 需要辨别的名字,然后给出Q个问 ...
- What Kind of Friends Are You? ZOJ 3960
比赛的时候用vector交集做的...情况考虑的不全面 wrong到疯 赛后考虑全了情况....T了 果然 set_intersection 不能相信 嗯 不好意思 交集a了 第二个代码 求出来 ...
- What Kind of Friends Are You? ZOJ - 3960(ZheJiang Province Contest)
怎么说呢...我能说我又过了一道水题? emm... 问题描述: 给定 n 个待确定名字的 Friends 和 q 个问题.已知 c 个 Friends 的名字. 对于第 i 个问题,有 个 Fri ...
- zoj 3960 What Kind of Friends Are You?(哈希)
What Kind of Friends Are You? Time Limit: 1 Second Memory Limit: 65536 KB Japari Park is a larg ...
- ZOJ 3960:What Kind of Friends Are You?
What Kind of Friends Are You? Time Limit: 1 Second Memory Limit: 65536 KB Japari Park is a large zoo ...
- ZOJ 3652 Maze 模拟,bfs,读题 难度:2
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4842 要注意题目中两点: 1.在踏入妖怪控制的区域那一刹那,先减行动力,然后才 ...
- ZOJ 2724 Windows Message Queue (优先级队列,水题,自己动手写了个最小堆)
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm& ...
- ACM学习历程——ZOJ 3822 Domination (2014牡丹江区域赛 D题)(概率,数学递推)
Description Edward is the headmaster of Marjar University. He is enthusiastic about chess and often ...
随机推荐
- Eclipse新建工作空间,复制原有的配置
步骤一: File->Switch workspace->Other...,按下图选择 只复制简单的配置,如cvs之类的信息是不会复制的. 步骤二: 在方法一的基础上做如下操作 ...
- yum-163源配置
原文:http://mirrors.163.com/.help/centos.html CentOS镜像使用帮助 收录架构 i386 x86_64 SRPMS 收录版本:所有版本更新时间:每4小时更新 ...
- Windows 7/Vista下安装Oracle Developer Suit遇到的几个问题
http://blog.csdn.net/pan_tian/article/details/8016318 Oracle Developer Suite (ODS) 10g是在Windows 7/Vi ...
- cxGrid 怎样才能让不自动换行 WordWrap:=false
cxGrid 怎样才能让不自动换行 WordWrap:=false 2014-12-26 02:04:03| 分类: delphi|举报|字号 订阅 下载LOFTER我的照片书 | ...
- mysql 唯一索引UNIQUE使用方法详解
创建唯一索引的目的不是为了提高访问速度,而只是为了避免数据出现重复.唯一索引可以有多个但索引列的值必须唯一,索引列的值允许有空值.如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的 ...
- iOS_UIWebView字体大小、字体颜色、背景色
前段时间需要修改webView背景色,上stackoverflow搜了很久没有找到结果,百度搜索,各种转载,各种坑爹,搜出来的都只有字体大小和字体颜色,页面背景没有看到,本人发布方法,希望可以帮助到更 ...
- 工作随笔——Java网络代理(http,socks)
简单说一下Java如何便捷的使用网络代理功能 此方法使用于大部分情况,一些特殊框架(如:mina)无效. // 代码设置http代理 System.setProperty("proxySet ...
- python 使用json格式转换
什么是json: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programm ...
- Winform文件上传
近期在做了一个winform的项目的附件上传的需求 最初项目选型的时候有三种 1.使用webservice.webapi上传文件 2,直接保存在数据库中 3.使用共享目录+dos命令 第一种有文件大小 ...
- Winform下的Combox根据值来选中项
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<DictionaryEntry>类型的(System.Collec ...