Skip to content

SP 2881题解

Published: at 04:06

思路

我们使用到了 defaultdict 数据类型来进行字符串的计数,同时也用了列表来记录字符串和结果。

我们使用一个循环,当输入的 nnmm 都为零时结束程序。在处理每个测试用例时,记录新出现的字符串来计数,最后更新结果。

步骤

代码

代码如下:

from collections import defaultdict
# 导入collections 中的defaultdict函数
mxn = int(1e5+10)

while True:
    n, m = [int(x) for x in input().split()]
    # 输入n和m
    if n == 0 and m == 0:
        # 输入结束
        break
    
    len = 0
    # 虽然len是一个内置函数,但是用它当变量名也不是不行
    cnt = defaultdict(int)
    # 建一个defaultdict
    ans = [0] * (n+1)
    # 开一个长度为n+1的ans列表存答案
    dna = [''] * mxn
    # 开一个很长的列表来存dna序列
    
    #下面的内容代码外面有讲
    for i in range(1, n+1):
        ins = input().strip()
        if cnt[ins] == 0:
            len += 1
            dna[len] = ins
        cnt[ins] += 1
    
    for i in range(1, len+1):
        ans[cnt[dna[i]]] += 1
    
    for i in range(1, n+1):
        print(ans[i])

Page Views Count