ABC344 (2024/03/09)
https://atcoder.jp/contests/abc344/tasks
〇A問題
Yuto.icon やるだけ.今回もRust
TTT.icon 1回目,2回目に出てきた'|'の添え字を記録しておき,print(S[ : index_1] + S[ index_2 + 1 :])としました.
TK.iconサンプル2合わないなぁと思っていたら、自分が入力した |spoiler| が実行結果として出力されていると勘違いしていただけだった。違うやり方で3回実装して気付く。なんの時間やったん?
tako.icon適当
yuichang.icon '|'来たらbool値を変える
おたふく.icon S = list(input().split("|"))のS[0], S[-1]
kakip.iconsplit
wataumi.icon愚直にfor文とif文
まーす.iconflagで|で囲まれた部分かを判断.
CarpDay.icon kakip.iconさんと同じく,splitさまさま
Kaplam.iconバーティカルバーっていうの初めて知った、私参加登録しなかったので3位以下順位ずれます(*‘∀‘)
〇B問題
Yuto.icon やるだけ2
TTT.icon 無限ループで受け取り,0がきたら0をappendした上でbreakし,その後にまとめて逆順に出力しました.
tako.icon適当2
TK.icon逆順じゃなくてソートしてるし。何やってんだか
yuichang.icon 0くるまで待つ
おたふく.icon ICPCチックな入力の受け取り。
kakip.iconopenで全部受け取り
wataumi.icon愚直にwhile文とif文
まーす.icon番兵0がでるまで,A.append(a)して,A.reverse.
CarpDay.icon TTT.iconさんと同じかな.reverseで逆順.
Kaplam.icon一瞬EOF検知しないといけないのかと思ってびっくりした
〇C問題
Yuto.icon 候補全列挙する.デバッグで辞書を全部出力したまま提出して1ペナ(TLE)...もったいない....
tako.iconset
TTT.icon 全列挙しながらsetにaddして,クエリの数字がそのsetに入っていれば'Yes'を出力しました.
TK.icon和を全部作って集合を作成。後はその数があるか確認。
yuichang.icon 全列挙、setに入ってる?
おたふく.icon 候補の全列挙。
kakip.iconQ<=100だと思っていてTLEした
wataumi.icondict()にすべきところをlist()にしてTLE
まーす.iconA+B+Cの結果をset(これをans_setとする)で管理して,あとは,X[i] in ans_setで判断.
CarpDay.icon集合に全列挙した結果を保存
Kaplam.iconみんなと一緒
〇D問題
Yuto.icon とばした
Yuto.icon コンテスト後,丁寧に実装して提出.カスみたいなミスで2ペナしつつ無事にAC.丁寧な実装とは...???落ち着いて考えたらめっちゃ簡単(まあ既にここの書き込みを見てDPで解けるという前情報はあったけど).これはコンテスト中に解かないとだめだな..
tako.iconDP。デバッグ消し忘れがもったいない
TK.iconDP。ループのRangeを一か所ミスしていて、時間を消費。
TTT.icon ナップサック問題ととらえて実装するもうまくいきませんでした.
yuichang.icon dp(i)文字目にする最小金額。0-indexdにしてたから死ぬほどだるかった
おたふく.icon ぎり間に合わず。問題の形式がDPへのお誘いだった。
kakip.icon1次元リストでDPしてWAでたので2次元に
wataumi.iconDPだよなぁ(しっかり勉強します😢)
CarpDay.icon 各袋から高々1つしか選べない点を見落としてWA.気付いて修正するも不完全でさらにWA.
Kaplam.iconDP、1WA出した後バグ修正したら別のバグが出た結果別々のケースで1WA2回出しました、芸術点ください
まーす.iconコンテスト後,落ち着いてDPで検討するもなかなか消えない1WA.コーナーケース分からん...
Kaplam.icon私が同じ袋から2個選べちゃったバグあった時と同じケースが落ちてるからその辺かと思って探ってみたけど落ちんな...
CarpDay.icon 次のテストケース試してみてちょ.
code: txt
aaa
3
1 b
1 c
3 a a a
まーす.icon次はtest_27.txt"だけ"WA.モグラたたきみたい
CarpDay.icon ではこのケースは?
code: txt
abc
3
1 b
1 c
3 a b c
まーす.icon本質的にはKaplam.iconさんと同じ間違いをしていました.Kaplam.iconさん,CarpDay.iconさん,ご助言ありがとです!!
〇E問題
Yuto.icon 連結リスト(linked list)やるだけ.N先生のデータ構造とアルゴリズムⅠを履修していたら誰でも解ける.双方向連結リストを構造体で実装するのはRustの地雷なので(Weakポインタ?とか使えば出来ないことはないけど,循環参照とか所有権とか,くそめんどい),Pythonでやる.
TK.iconこういうやつ逆順でやったらうまくいくのあったなとか思いつついろいろ考えて、うまくいかなかったので単純に考え直す。別に前後の情報さえ更新すればいいからそれを持っていればいけそうと気付くも時間切れ。
yuichang.icon 前後を持って頑張る。連結リストなんて知らない。
kakip.icon連結リストとか知らない
まーす.icon問題見た瞬間に双方向リストに気づく.私はdefaultdictで双方向リスト(配列Aの値をポインタのように扱う)を再現したつもりがWA.コンテスト後に落ち着いてやったら,なんか通った.これ解けたらもっとレート上がったのになぁ...
まーす.iconなんで通ったのかが分からないのが良くないんだよな......
まーす.iconどうやら先頭削除のときがダメだったっぽい..
CarpDay.iconまさにデータ構造とアルゴリズム.もっと簡単に作れないのかな?と思いつつ実装.
Kaplam.iconポインタすらすら書ける気しなかったので辞書使ってPythonで書いたらバグ起因のWAと1TLEが出たのでバグ修正とC++移植でAC,移植にちょっと時間かかりすぎた
yuichang.icon もう全部の問題最初からC++で書かないか?TLEに怯えることはない。
Kaplam.icon問題読んでTLE気になった問題はともかくそれ以外はpythonの方が考えること少なく書けるので...
yuichang.icon><
まーす.iconいっそのこと関数型にするべ.
tako.icon嘘解法こねこねしてたら終わってた
〇F問題
Yuto.icon 最初はフロー(燃やす埋める?)かDPかな?と考えてたけど,一旦普通のダイクストラしてみることにした.(累計行動回数,所持金,場所)を持ってダイクストラ的なことをやりたかったけど時間切れ
TK.iconダイクストラに持たせる情報を変えればいけそうと考えていたが、考えがまとまらないし、なんかE問題みんな通してると思ってEを考え直しに戻った。
CarpDay.icon数Aの「経路は何通り」の問題と同じなので,全パターン数計算したら10^26だったので諦め.移動回数は固定なので,チャージ回数の最小化.DPで解こうとするも時間切れ.今改めて考えたら,今後のために途中でチャージした方が良い場合もあるから,DPでは無理かな?
CarpDay.icon解説見ました.DPでした.「チャージするなら,過去の経路上でPが最大の地点」に気付くかどうかが鍵.これに気付けば,各地点に対して最小行動回数に加え過去経路上の最大Pを記憶すればよいことになる.なるほど!
#AtCoder #ABC