結果
| 問題 |
No.2076 Concon Substrings (ConVersion)
|
| コンテスト | |
| ユーザー |
AngrySadEight
|
| 提出日時 | 2022-08-24 13:52:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 4,266 ms / 5,000 ms |
| コード長 | 933 bytes |
| コンパイル時間 | 241 ms |
| コンパイル使用メモリ | 82,224 KB |
| 実行使用メモリ | 76,992 KB |
| 最終ジャッジ日時 | 2025-06-20 00:36:52 |
| 合計ジャッジ時間 | 30,723 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 30 |
ソースコード
N, A, B = map(int, input().split())
S = str(input())
rle = []
concnt = 0
now_idx = 0
while True:
if now_idx >= N - 2:
if concnt >= 1:
rle.append(concnt)
break
elif S[now_idx:(now_idx + 3)] == 'con':
now_idx += 3
concnt += 1
else:
now_idx += 1
if concnt >= 1:
rle.append(concnt)
concnt = 0
INF = -50000
dp1 = [INF for _ in range(8338)]
dp2 = [INF for _ in range(8338)]
dp1[0] = 0
for i in range(len(rle)):
for j in range(8338):
for k in range(rle[i] // A + 1):
if j + k >= 8338:
continue
dp2[j + k] = max(dp2[j + k], dp1[j] + (rle[i] - A * k) // B)
for j in range(8338):
dp1[j] = dp2[j]
dp2[j] = INF
#print(dp1[0:5])
ans = 0
for j in range(8338):
if dp1[j] >= j - 1:
ans = max(ans, 2 * j - 1)
if dp1[j] >= j:
ans = max(ans, 2 * j)
print(ans)
AngrySadEight