結果
問題 | No.291 黒い文字列 |
ユーザー |
![]() |
提出日時 | 2025-03-26 15:45:19 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,603 bytes |
コンパイル時間 | 300 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 275,064 KB |
最終ジャッジ日時 | 2025-03-26 15:46:02 |
合計ジャッジ時間 | 8,518 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 15 TLE * 1 -- * 10 |
ソースコード
from collections import defaultdicts = input().strip()current_dp = defaultdict(int)current_dp[(0, 0, 0, 0)] = 0 # (c1, c2, c3, c4) -> totalfor c in s:next_dp = defaultdict(int)for state in current_dp:c1, c2, c3, c4 = statecurrent_total = current_dp[state]possible_uses = []if c == '?':possible_uses = ['K', 'U', 'R', 'O', 'I']else:if c in {'K', 'U', 'R', 'O', 'I'}:possible_uses.append(c)possible_uses.append(None) # option to not use the characterfor use in possible_uses:new_c1 = c1new_c2 = c2new_c3 = c3new_c4 = c4new_total = current_totalif use == 'K':new_c1 += 1elif use == 'U':if new_c1 > 0:new_c1 -= 1new_c2 += 1elif use == 'R':if new_c2 > 0:new_c2 -= 1new_c3 += 1elif use == 'O':if new_c3 > 0:new_c3 -= 1new_c4 += 1elif use == 'I':if new_c4 > 0:new_c4 -= 1new_total += 1# else: use is None, do nothingkey = (new_c1, new_c2, new_c3, new_c4)if next_dp[key] < new_total:next_dp[key] = new_totalcurrent_dp = next_dpif current_dp:print(max(current_dp.values()))else:print(0)