結果
問題 | No.2388 At Least K-Characters |
ユーザー |
![]() |
提出日時 | 2023-07-21 21:52:55 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,089 bytes |
コンパイル時間 | 303 ms |
コンパイル使用メモリ | 82,168 KB |
実行使用メモリ | 78,320 KB |
最終ジャッジ日時 | 2024-07-05 03:42:25 |
合計ジャッジ時間 | 4,435 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 9 WA * 3 RE * 22 |
ソースコード
#############################################################import syssys.setrecursionlimit(10**7)from heapq import heappop,heappushfrom collections import deque,defaultdict,Counterfrom bisect import bisect_left, bisect_rightfrom itertools import product,combinations,permutationsipt = sys.stdin.readlinedef iin():return int(ipt())def lmin():return list(map(int,ipt().split()))MOD = 998244353#############################################################N,M,K = lmin()S = input()if M > N:S = S+"a"*(M-N)dp = [0]*(K+1)F = [0]*26ans = 0for i in range(M):ndp = [0]*(K+1)s = S[i]c = ord(s)-ord("a")t = sum(F)for j in range(c):if F[j]:ndp[t] += 1ndp[t] %= MODelse:ndp[min(t+1,K)] += 1ndp[t] %= MODfor j in range(K):ndp[j] += dp[j]*j%MODndp[j] %= MODndp[j+1] += dp[j]*(26-j)%MODndp[j+1] %= MODndp[K] += dp[K]*26%MODndp[K] %= MODF[c] = 1dp = ndpans += dp[-1]ans %= MODprint(ans)