2 条题解

  • 0
    @ 2026-5-11 18:13:59

    复杂度O(26**2*n)

    import os
    import sys
    n, k = map(int, input().split())
    str = input()
    ls = 'abcdefghijklmnopqrstuvwxyz'
    lsi = {s: i for i, s in enumerate(ls)}
    c = [[0] * 26]
    for i in range(n):
        c.append([c[-1][i] for i in range(26)])
        s = str[i]
        c[-1][lsi[s]] = c[-2][lsi[s]] + 1
    r = 0
    for i in range(n - k + 1):
        for j in range(i + k, i + k * 26 + 1, k):
            if j >= len(c):
                break
            f = 1
            for s in range(26):
                if c[j][s] - c[i][s] > k:
                    f = -1
                    break
                elif 0 < c[j][s] - c[i][s] < k:
                    f = 0
                    break
            if f == 1:
                r += 1
            elif f == -1:
                break
    print(r)
    

    信息

    ID
    170
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    434
    已通过
    113
    上传者