Google code jam 2008, Qualification Round:Save the Universe, 翻译

英文地址:here
本文仅作学习之用,题目的测试用例下载及答案的上传请到上面的英文地址,有不专业或者错误还请指正。

拯救宇宙

问题

都市里传说如果你去Googl的主页并且搜索"Google”,那么宇宙就会爆炸。我们告诉你一个秘密:这是真的!千万不要尝试或者告诉任何人。

好吧,也许不会爆炸。我们开了个玩笑而已。

这在另外一个很远很远的宇宙确实真的。在那个地方,如果你在任何搜索引擎上搜索那个引擎的名字,那么它就会爆炸。

为了与这种情况抗争。人们想到了一个有意思的解决办法。所有的请求被集合起来,然后传送到一个中央系统去决定每个请求用那个搜索引擎。中央系统发送一系列的请求到一个搜索引擎,并能在任何时候切换到另外一个引擎。所有的请求必须按照收到的顺序处理。中央系统一定不能把请求发送到名字与之相同的搜索引擎上。为了降低成本,需要切换的次数为最小。

你的任务是告诉我们中央系统需要在各个搜索引擎之间切换多少次,假设我们已经把中央系统最优化了。

输入

输入文件的第一行是测试用例的数目:N。接下来是N个测试用例。

每个测试用例以一个数字S开始:搜索引擎的数目。接下来的S行,每一行包含一个搜索引擎的名字。每个搜索引擎的名字不超过100个字符并且只包含大小写字母,空格和数字。而且他们不会重名。

接下来是包含一个数字Q的一行:请求的数目。再接下来的Q行每一行包含一个请求。在测试中每个请求都是一个搜索引擎的名字。

输出

对于每一个测试用例,你应该输出:

Case #X: Y

X表示第几个测试用例,Y表示切换搜索引擎的数目。对初始搜索引擎的选择不计算为一个切换。

限制

0 < N <= 20

小数据

2 <= S <= 10

0 <= Q <= 100

大数据

2 <= S <= 100

0 <= Q <= 1000

例子

输入

2
5
Yeehaw
NSM
Dont Ask
B9
Googol
10
Yeehaw
Yeehaw
Googol
B9
Googol
NSM
B9
NSM
Dont Ask
Googol
5
Yeehaw
NSM
Dont Ask
B9
Googol
7
Googol
Dont Ask
NSM
NSM
Yeehaw
Yeehaw
Googol

输出

Case #1: 1
Case #2: 0

在第一个测试中,一个可能的方案是用Dont ask 开始,然后再第8个请求后切换到NSM。

第二个测试,你可以一直用B9而不做任何切换。

原文地址:https://www.cnblogs.com/gg_shily/p/1548125.html