#P1014. Problem 1. Identity Theft
Problem 1. Identity Theft
当前没有测试数据。
一、题目名称
身份盗窃(Identity Theft)
二、题目描述
农夫约翰(Farmer John)有()头牛,每头牛都有一个以二进制字符串(由字符'0'和'1'组成的字符串)形式表示的农场ID号码。最年长的奶牛贝西(Bessie)记住了所有奶牛的农场ID号码,并且喜欢四处询问奶牛它们的ID号码。
当一头奶牛被问到它的农场ID号码时,它会开始说出正确的二进制字符串,但可能会混淆并在说完之前停止。当贝西听到这个二进制字符串时,如果它不是农场上任何一头奶牛的农场ID号码,那么她会耸耸肩然后走开。然而,如果它是与她询问的奶牛不同的另一头奶牛的ID号码,那么她会认为发生了身份盗窃,并将农场封锁。请注意,即使奶牛说出了它们完整的农场ID号码,这种情况也可能发生。
农夫约翰希望防止这种情况发生,并愿意通过在奶牛的农场ID号码上添加一些位来改变它们。在一秒内,他可以在任何一头奶牛的农场ID号码末尾添加一位。找出他防止农场封锁所需的最短时间。
三、输入格式(从终端/标准输入读取)
- 第一行包含,即农夫约翰农场上奶牛的数量。
- 接下来行。第行包含一个二进制字符串,等于农夫约翰农场上第头奶牛的农场ID号码。
- 没有奶牛的农场ID号码为空,且所有农场ID号码的总长度最多为。
四、输出格式(打印输出到终端/标准输出)
输出农夫约翰为确保农场永远不会被封锁所需花费的最短秒数。
五、样例输入及输出
样例输入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
解释:这个样例满足第一个子任务的约束条件。
六、评分规则
- 输入6 - 7:所有农场ID号码的长度恰好为。
- 输入8 - 15:且农场ID号码的总长度不超过。
- 输入16 - 25:无其他额外约束。
题目来源:Benjamin Qi。