QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#728756#2513. A Color Gamevwxyz#TL 15ms10684kbPython31.8kb2024-11-09 15:50:442024-11-09 15:50:45

Judging History

This is the latest submission verdict.

  • [2024-11-09 15:50:45]
  • Judged
  • Verdict: TL
  • Time: 15ms
  • Memory: 10684kb
  • [2024-11-09 15:50:44]
  • Submitted

answer

S,M=input().split()
M=int(M)
def solve(S,M):
    N=len(S)
    S=list(S)
    for i in range(N):
        S[i]=ord(S[i])-65
    dp=[[0]*(N+1) for n in range(N+1)]
    def idx(l,r,s):
        return (l*(N+1)+r)*26+s
    inf=1<<30
    dpS=[-inf]*(N+1)*(N+1)*26
    prev=[[None]*N for a in range(26)]
    for a in range(26):
        for i in range(N):
            if S[i]==a:
                prev[a][i]=i
            elif i:
                prev[a][i]=prev[a][i-1]
    nxt=[[None]*N for a in range(26)]
    for a in range(26):
        for i in range(N-1,-1,-1):
            if S[i]==a:
                nxt[a][i]=i
            elif i<N-1:
                nxt[a][i]=nxt[a][i+1]
    for d in range(N+1):
        for l in range(N-d+1):
            r=l+d
            if d==0:
                dp[l][r]=1
                for s in range(26):
                    dpS[idx(l,r,s)]=0
            else:
                for m in range(l+1,r):
                    dp[l][r]|=dp[l][m]&dp[m][r]
                for s in range(26):
                    I=[]
                    i=nxt[s][l]
                    while i!=None and i<r:
                        I.append(i)
                        if i==N-1:
                            break
                        i=nxt[s][i+1]
                    L,R=[l],[]
                    for i in I:
                        R.append(i)
                        L.append(i+1)
                    R.append(r)
                    for i in I:
                        if dp[l][i]:
                            dpS[idx(l,r,s)]=max(dpS[idx(l,r,s)],1+dpS[idx(i+1,r,s)])
                    if dpS[idx(l,r,s)]>=M:
                        dp[l][r]=1
    if dp[0][N]:
        ans="Yes"
    else:
        ans="No"
    return ans

ans=solve(S,M)
print(ans)

詳細信息

Test #1:

score: 100
Accepted
time: 3ms
memory: 10620kb

input:

BBBRRRRRRGGGB 3

output:

Yes

result:

ok single line: 'Yes'

Test #2:

score: 0
Accepted
time: 9ms
memory: 10684kb

input:

BBBRRRRRRGGGB 4

output:

No

result:

ok single line: 'No'

Test #3:

score: 0
Accepted
time: 15ms
memory: 10648kb

input:

RRRRGGGRRRRRG 3

output:

Yes

result:

ok single line: 'Yes'

Test #4:

score: -100
Time Limit Exceeded

input:

GMYCGMRMGYMRMKCBKBMKKBMMKBBKMBMRRMGYKKMBKMYRGGBMRMKKKBRCMKYCCKYGYYKKCKRCYGGKGRBCKMYMRCRGBRRYCCKKRRKRCKMMMGCCGYYKMCRGMKCYBMRRKYYRRKGGRBMCKGBBYYGGGBBYBBRCCMGKKGRGRMRRBRCYGGGKBRKCBYCKMMBRCGKCCYYMMCKGRBYRRGBBCGYKBBMKRBBKGCRBYCKMYKMCKMBRMGGYBKBRBMYGGCKYCMYKBRCCGCYRRRKCKCBKCMCYBKRBKMCCYRBKBGGMGMCBGMBMYCCK 1

output:


result: