結果
| 問題 | No.962 LCPs |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-12-22 12:15:44 |
| 言語 | Python3 (3.14.2 + numpy 2.4.0 + scipy 1.16.3) |
| 結果 |
AC
|
| 実行時間 | 1,119 ms / 2,000 ms |
| コード長 | 689 bytes |
| 記録 | |
| コンパイル時間 | 109 ms |
| コンパイル使用メモリ | 12,928 KB |
| 実行使用メモリ | 21,632 KB |
| 最終ジャッジ日時 | 2024-09-14 02:58:36 |
| 合計ジャッジ時間 | 16,092 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 64 |
ソースコード
#!/usr/bin/python if __name__ == '__main__': N = int(input()) S = [input() for i in range(N)] a = [0 for i in range(N - 1)] for i in range(N - 1): tmp = min(len(S[i]), len(S[i + 1])) for j in range(tmp): if S[i][j] != S[i + 1][j]: break a[i] = j + 1 ans = 0 for s in S: ans += len(s) nxt = [len(a) for i in range(len(a))] for i in range(len(a) - 1, -1, -1): now = i + 1 while now < len(a): if a[now] < a[i]: break now = nxt[now] nxt[i] = now for i in range(len(a)): now = i while now < len(a) and a[now] > 0: S, T = now - i + 2, nxt[now] - i + 1 L = (S + T) * (T - S + 1) // 2 ans += L * a[now] now = nxt[now] print(ans)