結果
| 問題 |
No.2964 Obstruction Bingo
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-11-16 16:07:07 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
MLE
|
| 実行時間 | - |
| コード長 | 1,220 bytes |
| コンパイル時間 | 396 ms |
| コンパイル使用メモリ | 82,688 KB |
| 実行使用メモリ | 1,658,972 KB |
| 最終ジャッジ日時 | 2024-11-16 16:08:46 |
| 合計ジャッジ時間 | 82,911 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 TLE * 4 MLE * 33 |
ソースコード
import collections
l,k = map(int,input().split())
s = list(input().rstrip())
t = list(input().rstrip())
for i in range(l):
s[i] = ord(s[i]) - ord('a')
t[i] = ord(t[i]) - ord('a')
a = list(map(int,input().split()))
mod = 998244353
inv = pow(sum(a),mod-2,mod)
su = sum(a)
dp = [[[0 for i in range(k+2)] for j in range(k+2)] for rf2effe in range(k+2)]
dp[0][0][0] = 1
ans = [0,0]
for i in range(k+1):
for j in range(k+1):
for m in range(k+1):
if abs(j-m) == l:
if j > m:
ans[0] += dp[i][j][m]
ans[0] %= mod
else:
ans[1] += dp[i][j][m]
ans[1] %= mod
continue
if abs(j-m) > l:
continue
if s[j%l] != t[m%l]:
dp[i+1][j][m] += (dp[i][j][m] * (su - a[s[j%l]] - a[t[m%l]]) * inv) % mod
dp[i+1][j+1][m] += (dp[i][j][m] * a[s[j%l]] * inv) % mod
dp[i+1][j][m+1] += (dp[i][j][m] * a[t[m%l]] * inv) % mod
else:
dp[i+1][j][m] += (dp[i][j][m] * (su - a[s[j%l]]) * inv) % mod
dp[i+1][j+1][m+1] += (dp[i][j][m] * a[s[j%l]] * inv) % mod
print(*ans)