#P2945. Find the Clones
Find the Clones
描述
得克萨斯州的一个小镇——双镇(Doubleville)遭到了外星人的袭击。外星人绑架了一些居民,并把他们带到了环绕地球运行的一艘宇宙飞船上。在进行了一些(相当令人不快的)人体实验后,外星人克隆了这些受害者,然后把他们的多个克隆体放回了双镇。所以现在可能会出现有 6 个一模一样的叫休·F·邦布尔比(Hugh F. Bumblebee)的人:一个是原本的人,另外 5 个是他的克隆体。联邦未经授权克隆事务局(FBUC)交给你一项任务,即确定每个人有多少个克隆体。为了帮助你完成这项任务,FBUC 已经从每个人身上采集了一份 DNA 样本。同一个人的所有克隆体都有相同的 DNA 序列,而不同的人有不同的序列(我们知道这个镇上没有同卵双胞胎,这不是问题)。
输入
输入包含几个测试用例块。每个用例以包含两个整数的一行开始:人数 以及 DNA 序列的长度 。接下来的 行包含 DNA 序列:每行包含一个由 个字符组成的序列,其中每个字符是 A
、C
、G
或 T
中的一个。
当输入出现 的块时,表示输入结束。
9 6
AAAAAA
ACACAC
GTTTTG
ACACAC
GTTTTG
ACACAC
ACACAC
TCCCCC
TCCCCC
0 0
输出
对于每个测试用例,你必须输出 行,每行包含一个整数。第一行包含没有被克隆的不同人的数量。第二行包含只被克隆了一次的人的数量(即对于每个这样的人,有两个一模一样的克隆体)。第三行包含有三个一模一样克隆体的人的数量,以此类推:第 行包含有 个一模一样克隆体的人的数量。例如,如果有 11 个样本,其中一个来自约翰·史密斯(John Smith),而其他所有样本都来自乔·富巴(Joe Foobar)的克隆体,那么你必须在第一行和第十行打印 1
,在所有其他行打印 0
。
1
2
0
1
0
0
0
0
0
提示
输入文件很大,建议使用 scanf
以避免超时(TLE)。
来源
2005 年中欧竞赛