P13454 [GCJ 2008 Qualification] Saving the Universe
题目描述
有一个都市传说:如果你在 Google 首页搜索“Google”,宇宙就会崩溃。我们有个秘密要告诉你……这是真的!请不要尝试,也不要告诉别人。好吧,其实不是,我们只是开玩笑。
但在遥远的另一个宇宙中,情况却并非如此。在那个宇宙里,如果你在任何搜索引擎上搜索该搜索引擎的名字,宇宙真的会崩溃!
为了解决这个问题,人们想出了一个有趣的办法。所有的查询会被集中到一起,然后交给一个中央系统来决定每个查询由哪个搜索引擎处理。中央系统会将一系列查询发送给某个搜索引擎,并且可以随时切换到另一个搜索引擎。所有查询必须按照收到的顺序处理。中央系统绝不能将一个查询发送给名字与该查询相同的搜索引擎。为了降低成本,切换搜索引擎的次数应尽量少。
你的任务是:假设我们以最优方式编程,请你告诉我们中央系统需要切换多少次搜索引擎。
输入格式
输入文件的第一行包含测试用例数 $N$。接下来有 $N$ 组测试数据。
每组测试数据首先包含一个整数 $S$,表示搜索引擎的数量。接下来的 $S$ 行,每行包含一个搜索引擎的名字。每个搜索引擎名字不超过一百个字符,只包含大写字母、小写字母、空格和数字。不会有两个搜索引擎名字相同。
接下来一行包含一个整数 $Q$,表示收到的查询数量。接下来的 $Q$ 行,每行包含一个查询。每个查询都是本组测试数据中某个搜索引擎的名字。
输出格式
对于每组输入数据,输出:
Case #$X$: $Y$
其中 $X$ 是测试用例编号,$Y$ 是切换搜索引擎的次数。初始选择搜索引擎不计为一次切换。
说明/提示
**样例解释**
在第一个测试用例中,一种可行的方案是先使用 Dont Ask,在第 8 个查询后切换到 NSM。
在第二个测试用例中,你可以一直使用 B9,无需切换。
**数据范围**
- $0 < N \leq 20$
**小数据集(5 分,测试点 1 - 可见)**
- $2 \leq S \leq 10$
- $0 \leq Q \leq 100$
**大数据集(20 分,测试点 2 - 隐藏)**
- $2 \leq S \leq 100$
- $0 \leq Q \leq 1000$
由 ChatGPT 4.1 翻译