結果
問題 | No.2388 At Least K-Characters |
ユーザー |
|
提出日時 | 2023-07-22 18:37:05 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 810 ms / 4,000 ms |
コード長 | 902 bytes |
コンパイル時間 | 713 ms |
コンパイル使用メモリ | 82,148 KB |
実行使用メモリ | 220,160 KB |
最終ジャッジ日時 | 2024-07-05 04:18:25 |
合計ジャッジ時間 | 17,112 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 34 |
ソースコード
N,M,K = map(int,input().split())S = input()now = 0dat = [0] * 26P = 998244353dp = [[0] * 27 for _ in range(M + 1)]ans = 0for i in range(N):c = ord(S[i]) - ord('a')for j in range(c):if dat[j] == 0:dp[i + 1][now + 1] += 1else:dp[i + 1][now] += 1for j in range(27):dp[i + 1][j] += dp[i][j] * jif 0 < j < 26:dp[i + 1][j + 1] += dp[i][j] * (26 - j)for j in range(27):dp[i + 1][j] %= Pif dat[c] == 0:now += 1dat[c] += 1if now >= K:ans += 1for i in range(N,M):for j in range(1,27):dp[i + 1][j] += dp[i][j] * jif 0 < j < 26:dp[i + 1][j + 1] += dp[i][j] * (26 - j)for j in range(27):dp[i + 1][j] %= Pfor i in range(K,27):for j in range(M + 1):ans += dp[j][i]if now >= K:ans -= 1print(ans % P)