結果
| 問題 |
No.2454 Former < Latter
|
| コンテスト | |
| ユーザー |
ntuda
|
| 提出日時 | 2023-09-04 23:51:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 449 ms / 2,000 ms |
| コード長 | 719 bytes |
| コンパイル時間 | 527 ms |
| コンパイル使用メモリ | 82,944 KB |
| 実行使用メモリ | 78,848 KB |
| 最終ジャッジ日時 | 2024-06-22 21:05:11 |
| 合計ジャッジ時間 | 3,123 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 23 |
ソースコード
def z_algo(S):
N = len(S)
A = [0] * N
i = 1;
j = 0
A[0] = l = len(S)
while i < l:
while i + j < l and S[j] == S[i + j]:
j += 1
if not j:
i += 1
continue
A[i] = j
k = 1
while l - i > k < j - A[k]:
A[i + k] = A[k]
k += 1
i += k;
j -= k
return A
T = int(input())
for _ in range(T):
N = int(input())
S = input()
A = z_algo(S)
ans = 0
for i in range(1, N):
j = A[i]
if i < j:
ans += 1
elif i + j < N:
if i == j:
ans += 1
elif S[j] < S[i + j]:
ans += 1
print(ans)
ntuda