結果
問題 | No.2330 Eat Slime |
ユーザー |
![]() |
提出日時 | 2023-05-26 09:31:35 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,603 bytes |
コンパイル時間 | 219 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 132,876 KB |
最終ジャッジ日時 | 2024-12-24 19:14:19 |
合計ジャッジ時間 | 121,008 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 8 TLE * 22 |
ソースコード
import cmathpi = cmath.piexp = cmath.expdef make_exp_t(N, base):exp_t = {0: 1}temp = Nwhile temp:exp_t[temp] = exp(base / temp)temp >>= 1return exp_tdef fft_dfs(f, s, N, st, exp_t):if N == 2:a = f[s]; b = f[s + st]return [a + b, a - b]N2 = N // 2; st2 = st * 2F0 = fft_dfs(f, s, N2, st2, exp_t)F1 = fft_dfs(f, s + st, N2, st2, exp_t)w = exp_t[N]; wk = 1.0for k in range(N2):U = F0[k]; V = wk * F1[k]F0[k] = U + VF1[k] = U - Vwk *= wF0.extend(F1)return F0def fft(f, N):if N == 1:return freturn fft_dfs(f, 0, N, 1, fft_exp_t)def ifft(F, N):if N == 1:return Ff = fft_dfs(F, 0, N, 1, ifft_exp_t)for i in range(N):f[i] /= Nreturn fn, m, x = map(int, input().split())c = list(map(int, input().split()))color = [[0] * n for _ in range(5)]point = [[0] * n for _ in range(5)]for i in range(n):color[c[i] - 1][i] += 1for _ in range(m):a, b, y = map(int, input().split())point[b - 1][n - a] += yN = 2**(2 * len(color[0]) - 1).bit_length()fft_exp_t = make_exp_t(N, -2j * pi)ifft_exp_t = make_exp_t(N, 2j * pi)score_f = []for i in range(5):f = color[i]g = point[i]f.extend([0] * (N - len(f)))g.extend([0] * (N - len(g)))F = fft(f, N)G = fft(g, N)fg = ifft([a * b for a, b in zip(F, G)], N)[n - 1:]score_f.append(list(map(lambda x: int(x.real + 0.5), fg)))score = [score_f[0][i] + score_f[1][i] + score_f[2][i] + score_f[3][i] + score_f[4][i]for i in range(n)]ans = x * nfor i in range(n):ans = max(ans, i * x + score[i])print(ans)