ABC337 (2024/01/20)
〇A問題
yuichang.iconやる
tako.icon適当
kakip.iconmap,sum,zipでいいかんじに
CarpDay.icon kakip.iconさんと同じ
おたふく.icon 丁寧にすべて書く。
wataumi.iconおたふく.icon さんと同じ
Yuto.icon 準備が間に合わなくてバタバタしてた.Pythonの環境が機嫌悪かったので,Rustで参加.
まーす.iconXの総和とYの総和の比較.文章を読み間違え,「勝った回数の大小」と勘違いし1WA.
〇B問題
yuichang.icon A->Cみたいに急にC出たときにペナした。最悪><
wataumi.iconyuichang.icon さんと同じ 最悪><
tako.icon空文字列も拡張文字列に含まれることに注意
kakip.iconset(s) <= set("ABC") and sorted(s) == list(s) 追記 よく考えたらsetで判定はいらなかったwataumi.icon天才!
CarpDay.icon同じ文字を圧縮した文字列作って,A, B,C,AB,AC,BC,ABCのどれかならYes
おたふく.icon 見ている文字がどの拡張文字列に属しているかで場合分け
Yuto.icon 空文字列も拡張文字に含まれる 問題文に書いてるのに,読んでなかった...
Rustなら,input.iter().tuple_windows().all(|(x, y)| x <= y)と書ける.windows関数便利.
まーす.iconflagで1つずつ調べていく(めんどくさい).
〇C問題
yuichang.icon whileで突き進む
tako.icondefaultdictで頑張る
kakip.iconi番目の次の人を記録するlistを作りました。デバッグ用のrange(n)をfor文内に入れたままにしてTLE。
CarpDay.icon next[i]: iさんの次の人 を作る.
wataumi.iconCarpDay.icon さんの辞書バージョン
おたふく.icon トポロジカルソート
まーす.icon連結リストのポインタみたいな感じで対応関係を作っていった.
〇D問題
yuichang.icon dequeに入れまくって'o'の数を別で記憶。サンプル最後だけ通らない。時間間に合ってるから実装でどこかミスってると思う><
tako.iconわからん
kakip.iconxがくるまで縦または横に見ていって数える。実装むずい
CarpDay.icon 実装系なので頑張る.1点を除き,ベタに実装.転置使って,縦方向スキャンを横方向スキャン関数で対応.
おたふく.icon 各行、各列で連続するK文字のoを作るために必要な最小の操作回数を求められれば、その全ての最小が今回の問題の答えになるので、各行、各列で連続するK文字のoを作るために必要な最小の操作回数をそれぞれO(H), O(W)で求められると間に合う。ABC334でCarpDay.iconさんが紹介してくれたスライド最小から着想を得ました。
wataumi.icon
時間内WA(場合分けミス cntP = 0の位置)
時間外TLE(for文の中でi += 1をしても意味がない)
時間外WA(while文でややこしい実装 for k in reversed(range(K)):)
時間外AC(for文で回してif cntK == K:で場合分け)
〇E問題
tako.icon二進数。緑戻りましたCarpDay.iconおめでとう!
yuichang.icon bitで見る(天才?)
kakip.icon半分ずつ分けるやつ。5分足りなかった。
CarpDay.icon残り2分でギリギリ!と思ったら,そもそも考え方間違っていた.二進数だよね..気付かなかった自分が残念.
おたふく.icon それぞれの人に(N + 1) // 2杯のジュースを飲ませて翌日倒れた人からどのジュースか判定しようと考えるもWA。例が1つしか無いので、考え漏れに気付きずらい。
〇F問題
kakip.icon問題みてないけど珍しくF問題よりG問題のほうがDifficulty低い