結果
| 問題 | No.3439 [Cherry 8th Tune] どの頂点にいた頃に戻りたいのか? |
| コンテスト | |
| ユーザー |
👑 Kazun
|
| 提出日時 | 2026-01-18 15:44:21 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 2,255 bytes |
| 記録 | |
| コンパイル時間 | 815 ms |
| コンパイル使用メモリ | 82,404 KB |
| 実行使用メモリ | 130,156 KB |
| 最終ジャッジ日時 | 2026-01-23 21:06:06 |
| 合計ジャッジ時間 | 15,475 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 7 TLE * 1 -- * 29 |
ソースコード
def conv(a: list[int], b: list[int]) -> list[int]:
n = len(a)
m = len(b)
c = [0] * (n + m - 1)
for i in range(n):
for j in range(m):
c[i + j] += a[i] * b[j]
c[i + j] %= Mod
return c
def multi_conv(polys: list[list[int]]) -> list[int]:
a = [1]
for poly in polys:
a = conv(a, poly)
return a
def left(S: list[str], j: int) -> int:
for i in range(j - 1, 0, -1):
if S[i] == "B":
return i
else:
return 0
def right(S: list[str], j: int) -> int:
for i in range(j, len(S)):
if S[i] == "B":
return i
else:
return len(S)
def fetch_polynomial(d: int, p: int):
a = [0] * (d + 1)
a[d] += p
a[0] += 1 - p
return a
def solve():
from collections import defaultdict
N, Q = map(int, input().split())
S = list(f"*{input().strip()}")
S[N] = "B"
W = list(map(int, input().split()))
ans = []
for _ in range(Q):
mode, *options = map(int, input().split())
if mode == 1:
l, r = options
for i in range(l, min(r, N - 1) + 1):
S[i] = "G" if S[i] == "B" else "B"
elif mode == 2:
l, r, b = options
for i in range(l, r + 1):
W[i] += b
elif mode == 3:
v, K = options
u = list(map(int, input().split()))
D = defaultdict(int)
less = 0
for k in range(K):
if u[k] < v:
less += 1
continue
D[left(S, u[k])] += 1
t = left(S, v)
p = sum(W[j] for j in range(v, right(S, v) + 1)) * pow(sum(W[j] for j in range(right(S, v) + 1)), -1, Mod) % Mod
res = [1 if d == D[t] else 0 for d in range(D[t] + 1)]
for s in D:
if s == t:
continue
res = conv(res, fetch_polynomial(D[s], p))
ans.append(res + [0] * less)
return ans
#==================================================
import sys
input = sys.stdin.readline
write = sys.stdout.write
Mod = 998244353
to_string = lambda P: " ".join(map(str, P))
write("\n".join(map(to_string, solve())))
Kazun