ZOJ 3601 Unrequited Love 浙江省第九届省赛
Unrequited Love
Time Limit: 16 Seconds Memory Limit: 131072 KB
There are n single boys and m single girls. Each of them may love none, one or several of other people unrequitedly and one-sidedly. For the coming q days, each night some of them will come together to hold a single party. In the party, if someone loves all the others, but is not loved by anyone, then he/she is called king/queen of unrequited love.
Input
There are multiple test cases. The first line of the input is an integer T ≈ 50 indicating the number of test cases.
Each test case starts with three positive integers no more than 30000
-- n m q
. Then each of the next n lines describes a boy, and each of the next m lines describes a girl. Each line consists of the name, the number of unrequitedly loved people, and the list of these people's names. Each of the last q lines describes a single party. It consists of the number of people who attend this party and their names. All people have different names whose lengths are no more than 20
. But there are no restrictions that all of them are heterosexuals.
Output
For each query, print the number of kings/queens of unrequited love, followed by their names in lexicographical order, separated by a space. Print an empty line after each test case. See sample for more details.
Sample Input
2
2 1 4
BoyA 1 GirlC
BoyB 1 GirlC
GirlC 1 BoyA
2 BoyA BoyB
2 BoyA GirlC
2 BoyB GirlC
3 BoyA BoyB GirlC
2 2 2
H 2 O S
He 0
O 1 H
S 1 H
3 H O S
4 H He O S
Sample Output
0
0
1 BoyB
0 0
0 看的人家的代码算是理解了,我是直接比较的明显要超时(n^2),换个思路后时间复杂度变为(2*n)代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<map>
#include<set>
using namespace std;
char s1[],s2[],s3[];
int main()
{
int T;
int n,m,q,n0;
scanf("%d",&T);
while(T--)
{
string lovy,lovyed;
map< pair<string,string> ,int >love;
love.clear();
scanf("%d %d %d",&n,&m,&q);
lovy = lovyed = "";
while(n--)
{
scanf("%s %d",s1,&n0);
lovy = s1;
while(n0--)
{
scanf("%s",s2);
lovyed = s2;
love[make_pair(lovy,lovyed)] = ;
}
lovy = lovyed = "";
} while(m--)
{
scanf("%s %d",s1,&n0);
lovy = s1;
while(n0--)
{
scanf("%s",s2);
lovyed = s2;
love[make_pair(lovy,lovyed)] = ;
}
lovy = lovyed = "";
}
while(q--)
{ bool flag = true;
int k =;
string mm[];
scanf("%d",&n0);
scanf("%s",s1);
mm[]=lovy = s1;
for(int i=;i<n0;i++)
{
scanf("%s",s1);
lovyed = mm[i] = s1;
//关键在于下面的判断
if(love[make_pair(lovy,lovyed)] == || love[make_pair(lovyed,lovy)] == )
{
lovy = mm[i];
k = i;
}
}
for(int j=;j<k;j++)
{
if(lovy != mm[j])
{
if(love[make_pair(lovy,mm[j])] == || love[make_pair(mm[j],lovy)] == )
{
flag = false;
}
}
}
if(flag)
printf("1 %s\n",lovy.c_str());
else printf("0\n");
}
printf("\n");
}
return ;
}
ZOJ 3601 Unrequited Love 浙江省第九届省赛的更多相关文章
- ZOJ 3606 Lazy Salesgirl 浙江省第九届省赛
Lazy Salesgirl Time Limit: 5 Seconds Memory Limit: 65536 KB Kochiya Sanae is a lazy girl who ma ...
- nyoj1273 河南省第九届省赛_"宣传墙"、状压DP+矩阵幂加速
宣传墙 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 ALPHA 小镇风景美丽,道路整齐,干净,到此旅游的游客特别多.CBA 镇长准备在一条道路南 面 4*N 的墙上做 ...
- NYOJ 1272 表达式求值 第九届省赛 (字符串处理)
title: 表达式求值 第九届省赛 nyoj 1272 tags: [栈,数据结构] 题目链接 描述 假设表达式定义为: 1. 一个十进制的正整数 X 是一个表达式. 2. 如果 X 和 Y 是 表 ...
- 河南省acm第九届省赛--《表达式求值》--栈和后缀表达式的变形--手速题
表达式求值 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 假设表达式定义为:1. 一个十进制的正整数 X 是一个表达式.2. 如果 X 和 Y 是 表达式,则 X+Y, ...
- ZOJ 3601 Unrequited Love 【STL__pair_的应用】
下面这个例子就是 STL:pair 的用法 #include <iostream> #include <utility> #include <string> usi ...
- NYOJ--1276--机器设备(河南省第九届省赛,简单的bfs)
机器设备 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 Alpha 公司设计出一种节能的机器设备.它的内部结构是由 N 个齿轮组成.整个机器设备有 一个驱动齿轮,当 ...
- SD第九届省赛B题 Bullet
Bullet Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem Description In G ...
- 蓝桥杯第九届省赛 sscanf(),str.c_str()函数的使用
标题:航班时间 [问题背景]小h前往美国参加了蓝桥杯国际赛.小h的女朋友发现小h上午十点出发,上午十二点到达美国,于是感叹到“现在飞机飞得真快,两小时就能到美国了”. 小h对超音速飞行感到十分恐惧.仔 ...
- 【二分图最大匹配】Bullet @山东省第九届省赛 B
时间限制: 6 Sec 内存限制: 128 MB 题目描述 In GGO, a world dominated by gun and steel, players are fighting for t ...
随机推荐
- AI编辑SVG格式的相关问题
制作SVG:1.需要给每个图层命名,生成的SVG文件的(表示一个路径,另外还有标签等)标签就会有个id属性是这个图层的名字2.保存的时候内嵌文字可以保存为SVG或转为path格式,如果没有文字,则无所 ...
- 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式
------- android培训.java培训.期待与您交流! ---------- 多线程: 进程和线程: 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者 ...
- Useful SQL Server Article
http://blogs.technet.com/b/topsupportsolutions/archive/2013/11/06/top-support-solutions-for-microsof ...
- Win10系统下安装Tensorflow
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,具备良好的灵活性和拓展性. 过去TensorFlow只支持Linux和Mac OS,而没有提供windows的支持. ...
- java中abstract
abstract(抽象)修饰符,可以修饰类和方法 1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半 ...
- x2go
单词解析 productivity n. 生产力:生产率:生产能力seamlessly adv. 无缝地roam constantly 经常漫游agility and flex ...
- unity, SerializedObject.FindProperty不要写在Editor的OnEnable里,要写在OnInspectorGUI里
如果像下面这样写: using UnityEngine;using System.Collections;using UnityEditor;using System.Collections.Gene ...
- 【转】ASP.NET Cookies简单应用 记住用户名和密码
不要试图给Password类型的TextBox赋值! 在asp.net中,不要试图给Password类型的TextBox控件赋值! 无论是在设计或是运行时,都不可以的. 猜测的原因是,password ...
- JS对日期时间的操作
代码: //判断是否超期(有效期开始超过一年后算已超期) function IsEffect(effectDate) { var val = ""; var currentDate ...
- jquery点击改变图片src源码并toggle
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...