結果
| 問題 |
No.465 PPPPPPPPPPPPPPPPAPPPPPPPP
|
| コンテスト | |
| ユーザー |
りあん
|
| 提出日時 | 2020-11-23 06:28:34 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,462 bytes |
| コンパイル時間 | 484 ms |
| コンパイル使用メモリ | 13,056 KB |
| 実行使用メモリ | 120,052 KB |
| 最終ジャッジ日時 | 2024-07-23 17:18:46 |
| 合計ジャッジ時間 | 9,272 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 5 TLE * 2 -- * 13 |
ソースコード
import itertools
def pal(s_):
s = "^" + s_
n = len(s)
pl = [[0, 0, 0] for _ in range(n)]
pl[0][0] = 1
gpl = [[0, 0, 0] for _ in range(n)]
g = []
for j in range(1, n):
g1 = [(i - 1, d, k) for i, d, k in g if i > 0 and s[i - 1] == s[j]]
g2 = []
r = -j
for i, d, k in g1:
if i - r != d:
g2.append((i, i - r, 1))
if k > 1:
g2.append((i + d, d, k - 1))
else:
g2.append((i, d, k))
r = i + (k - 1) * d
if j > 1 and s[j - 1] == s[j]:
g2.append((j - 1, j - 1 - r, 1))
r = j - 1
g2.append((j, j - r, 1))
g = []
for i, d, k in g2:
if not g or g[-1][1] != d:
g.append((i, d, k))
else:
g[-1] = (g[-1][0], g[-1][1], g[-1][2] + k)
# pl[j] = 0
for i, d, k in g:
r = i + (k - 1) * d
m = [0, pl[r - 1][0], pl[r - 1][1]]
if k > 1:
for l in range(3):
m[l] += gpl[i - d][l]
if d <= i:
gpl[i - d] = m
for l in range(3):
pl[j][l] += m[l]
return (pl, g)
pl, g = pal(input())
accum = list(itertools.accumulate([i[-1] for i in pl]))
ans = 0
for i, d, k in g:
for j in range(k):
if i + d * j > 1:
ans += accum[i + d * j - 2]
print(ans)
りあん