#P1014. Problem 1. Identity Theft

Problem 1. Identity Theft

当前没有测试数据。

一、题目名称

身份盗窃(Identity Theft)

二、题目描述

农夫约翰(Farmer John)有NN1N1051\leq N\leq10^5)头牛,每头牛都有一个以二进制字符串(由字符'0'和'1'组成的字符串)形式表示的农场ID号码。最年长的奶牛贝西(Bessie)记住了所有奶牛的农场ID号码,并且喜欢四处询问奶牛它们的ID号码。

当一头奶牛被问到它的农场ID号码时,它会开始说出正确的二进制字符串,但可能会混淆并在说完之前停止。当贝西听到这个二进制字符串时,如果它不是农场上任何一头奶牛的农场ID号码,那么她会耸耸肩然后走开。然而,如果它是与她询问的奶牛不同的另一头奶牛的ID号码,那么她会认为发生了身份盗窃,并将农场封锁。请注意,即使奶牛说出了它们完整的农场ID号码,这种情况也可能发生。

农夫约翰希望防止这种情况发生,并愿意通过在奶牛的农场ID号码上添加一些位来改变它们。在一秒内,他可以在任何一头奶牛的农场ID号码末尾添加一位。找出他防止农场封锁所需的最短时间。

三、输入格式(从终端/标准输入读取)

  1. 第一行包含NN,即农夫约翰农场上奶牛的数量。
  2. 接下来NN行。第kk行包含一个二进制字符串,等于农夫约翰农场上第kk头奶牛的农场ID号码。
  3. 没有奶牛的农场ID号码为空,且所有农场ID号码的总长度最多为10610^6

四、输出格式(打印输出到终端/标准输出)

输出农夫约翰为确保农场永远不会被封锁所需花费的最短秒数。

五、样例输入及输出

样例输入1

3
1
1
1

样例输出1

5

解释:这个样例满足第一个子任务的约束条件。我们可以在5秒内使封锁不可能发生,方法是在第一个农场ID号码后添加'0',在第二个农场ID号码后添加'10',在第三个农场ID号码后添加'11',使农场ID号码变为'10'、'110'和'111'。可以证明不能在4秒或更短时间内完成。例如,如果保持农场ID号码不变,那么所有3头牛都有相同的农场ID号码'1',所以当贝西听到它时,它总是另一头牛的农场ID号码。再如,如果只花费2秒在第二个农场ID号码后添加'0',在第三个农场ID号码后添加'1',那么农场ID号码变为'1'、'10'和'11',所以第二头和第三头牛在说出它们的农场ID号码时,可能在中间停止并只说'1',这将是第一头牛的农场ID号码。

样例输入2

3
1
11
111

样例输出2

2

解释:我们可以在2秒内使封锁不可能发生,方法是在前两个农场ID号码后添加'0',使农场ID号码变为'10'、'110'和'111',与之前一样。可以证明不能在1秒内完成。

样例输入3

3
1
1
11

样例输出3

4

解释:我们可以在4秒内使封锁不可能发生,方法是在第一个农场ID号码后添加'00',在第二个农场ID号码后添加'01'。可以证明不能在3秒或更短时间内完成。

样例输入4

5
0
01
0011
010
01

样例输出4

6

样例输入5

14
0
1
1
0
1
0
1
1
1
1
1
0
0
1

样例输出5

41

解释:这个样例满足第一个子任务的约束条件。

六、评分规则

  1. 输入6 - 7:所有农场ID号码的长度恰好为11
  2. 输入8 - 15:N102N\leq10^2且农场ID号码的总长度不超过10310^3
  3. 输入16 - 25:无其他额外约束。

题目来源:Benjamin Qi。