ABC436 (2025/12/13)
https://atcoder.jp/contests/abc436/tasks
〇A問題
Kaplam.icon久々にrated復帰 rated参加100回目だったらしい、めでたい
まーす.icon print("o" * (N - len(S)) + S).
CarpDay.icon まーす.iconさんと(クォーテーションがシングルかダブルかの違い以外)同じ.
N_N.icon while文で長さがNになるまでループ.
〇B問題
Kaplam.icon素直書いてある通りに、読み辛い...要するに右上に進んでn回毎に1行下げる操作なのでそっち意識して書いた方が楽だったかも
まーす.icon 「$ N \times Nの魔法陣の解法を実装するプログラムを書け」という問題.正直にCの方が簡単.
CarpDay.iconこれで魔法陣になるんだね.不思議.何でだろう?
CarpDay.icon 意味わからないまま,いわれた通りにコード化.
N_N.icon ちょっと図を書いて考えたりしちゃったけど,結局問題文をそのまま書いた.意味を考えるだけ無駄だった.
〇C問題
Kaplam.icon置く予定の所4マスを調べる、素直にgrid持つことは出来ないのでsetで
まーす.icon setで置けるか置けないかの判断をする.
CarpDay.iconまーす.iconさんと同じっぽい.
N_N.icon Java で HashMap<Integer, HashSet<Integer>> でブロックの左上の座標だけ覚えるようにする.そうすると次に置くときに,置く場所とその周り8箇所をチェックする必要がある.左上座標だけじゃなくて,素直に4マス分の座標を覚えておいた方が良かったかも.
〇D問題
Kaplam.icon同じ文字に対して辺張って素直なBFS
まーす.icon Kaplam.iconさんと同じ.ワープ先は同じ文字なら任意なので,使ったワープマスも記憶しておかないとTLEになる.
CarpDay.icon多分方針は同じだろうけどTLEに苦しむ.Ver.1: 文字ごとにグループ組んで隣接リスト作っていてTLE22.Ver.2: 隣接リスト作らず,文字をキー,値をリストにしてその文字の座標を格納してBFSするもTLE9.どこが問題なのか分からずふと一度選ばれた文字は二度とワープ起点にならないことに気付いてchecked2なるもの作ってやっとAC.「CondonならTLEから抜けられる?」と試したがサンプルでもエラーでて諦める.
CarpDay.iconちなみに,C++で試したけど,上のこと気付かないとやっぱりTLEでした.良かった(?).
N_N.icon 結果的に素直なBFS.ただし,ワープで使った場所をすべて消すみたいなことをしないとTLEになってしまった.
〇E問題
CarpDay.iconコンテスト終了10分前にやり方思いついて,入力例3で確認.終了1分前に手計算の結果が合っているのを確認.このあとコード化します!
CarpDay.iconコード化に2分...ACでした(xx)悔しい.
CarpDay.icon転倒数=答え,と思い込んだのが敗因.転倒数は隣接二項間の交換数(ということに気付くのに40分ぐらいかかった).中途半端な知識は自分の首絞めることを痛感しました..
Kaplam.iconswapの連結成分1個に対して、連結成分の要素数をnとしてn*(n-1)//2
まーす.icon Kaplam.iconさんと同じ.紙に書いて実験していたら,奇跡的に順列$ (P_{1}, P_{2}, \dots, P_{N})を頂点$ iから頂点$ P_{i}に張ったグラフとして見れたのでAC出来た.
〇F問題
Kaplam.icon題意がわかりにくいけど、要するにある明るさを上限とした写真の枚数についてsumをとればいい、例えば入力例1の3を上限とすると、3より小さい値は左側に0,右側に2個なので(0+1)*(2+1)の3通りある、みたいな
CarpDay.icon 方針さっぱりだったのでKaplam.iconさんの伏字見る...え??まさか?こちらの問題で転倒数が関係するとは!E問題でセグ木作って転倒数作ろうとしていたよ!!
〇G問題
Kaplam.icon値のmaxが100だからそこからmodとるとかなのかと考えるだけ考えたけどまぁわからん
#AtCoder #ABC