ABC433 (2025/11/22)
https://atcoder.jp/contests/abc433/tasks
〇A問題
まーす.icon 最初「今年から$ Z年後までの間で(今年含む),(高橋君の年齢)が(青木君の年齢)倍となる年はあるか」を問う問題だと勘違いしていた.境界探すのダルかったので,無駄に$ 10 ^ {5}回ループさせています.このことから,高橋君と青木君は私のプログラム上では,(ループが止まりさえしなければ)たいそうご長寿であると言えるでしょう(年齢の定義に依りますが).
Kaplam.icon雑に range(10**6)した
まーす.icon もっとご長寿なお方がいました.
CarpDay.icon 答えが$ d年後とすると,$ X+d=Z(Y+d)が成立.式変形して$ (Z-1)d = X-ZYなので,$ X-ZY\geq 0かつ$ X-ZY \mod (Z-1) = 0 ならYes,そうでないならNo.
N_N.icon (X = Y) % (Z - 1) != 0の場合,X - Y < Z - 1の場合,(X - Y) / (Z - 1) < Yの場合,No.それ以外の場合,Yes.
〇B問題
まーす.icon 2重ループをまわしていく~.個人的にAより簡単.
Kaplam.icon今まで見た人をlistに分離して前から見て身長超えてたら更新してみたいな
CarpDay.icon2重ループ.最初「最も近い人」を「最も身長が(高くて)近い人」だと思っていて(それでも入力例1は通って入力例4でWA)手間かかる.「曖昧やん!」と文句言ってたら,質問入って途中で修正入りましたね(^^;
N_N.icon 私のCarpDay.iconさんと同じように読み取って書き進めてしまう.確かにもう一度読んだら,すんなり読めた気がする...
〇C問題
まーす.icon 尺取り法(リージョンフォーム)でやった.初期値のミスで1WA.(頭が痛い)
まーす.icon 実質的には圧縮しているが,圧縮はしてないです.
Kaplam.icon配列を後ろから見て、同じ数字がいくつまで続いているかを求めて、開始点を前から1個ずつ見て行ってみたいな
CarpDay.icon more_itertools.run_length使って,前後を比較.後が前の⁺1なら,両方の個数の小さい方を加算.
N_N.icon ランレングス圧縮を行って条件を満たす場合,前後の小さい方を足していく.(CarpDay.icon さんと同じ.)
〇D問題
Kaplam.icon下に〇桁置いた時のmodについて覚えておいて、フィットするものがあるかを探すみたいな、この間も似たようなのあった気がする
まーす.icon Kaplam.iconさんと同じ.上手く説明が出来ないが,$ ((fの第2引数となる予定のA_{i}の桁数), (fの第2引数となる予定のA_{i}) \times (fの第2引数となる予定予定のA_{i}の桁数)) を最初に数え挙げてやるとよさげ.
まーす.icon 問題文が一文字違いな問題:https://atcoder.jp/contests/abc428/tasks/abc428_d
CarpDay.icon 今回の問題と全然関係ないじゃん!...と思ったけど,fの定義は同じか...解法は全然違うね.
まーす.icon 何を以て命名しているんだろう......
CarpDay.icon 多分,上のABC428Dをオマージュしているんだろうね...「解法全然違う」って書いたけど,桁ずらすという点に注目することは同じだからヒントになっているのかも.
まーす.icon $ fの定義が同じなので,その説(オマージュ説)濃厚ですね.
CarpDay.icon 改めてABC428Dの(コンテスト中解けなかったので終了後に提出した)ACコード見たら,今回とほとんど同じでした...「全然違う」が間違いでした..
まーす.icon オマージュではなく,使いまわし......
CarpDay.icon多分上のお二人と同じ.A≦10^9なので桁が上がるのは最大でも9桁.各数がi桁(i=1,...,最大桁数)上がったときに剰余がいくつになるか計算して,剰余がXになる個数を辞書で管理.下に加える各数の桁数と剰余を求めて,剰余の合計が0となる個数を加算.
N_N.icon 皆さんと同じ.だけど,すぐには思い付かなかった.なんで,そんなにすぐ思い付くんだろう?さすがです.
〇E問題
Kaplam.icon大きい方から見て行って、縦横両方に登場する値は確定するとか、縦だけだったらその列について今見てる値より小さい値を雑につっこめるよね~みたいに、ペナは計算量問題ないはずなのになぜかCodonでもTLEが出て困ってた、大きめのdefaultdict(deque)が何か異常に重かったらしく、それをlistにするだけで>=2000msから100ms未満まで落ちた
CarpDay.icon多分N×Mから順に埋めていって,行や列が未確定なときは,置いても良い箇所に置くのだろうなぁ,と思いつつ,計算効率良い実装法がすぐに思いつかずにF問題へ.F問題から戻って気合入れて実装するが,集合とリストがごちゃごちゃになるコードになってパニックしている間に時間切れ.このまま最後まで作ってみたい気もするが,もっとシンプルな方法で解けるなら時間の無駄だし,どうしようかな...
CarpDay.icon 終了後に試行錯誤して,結局上の方法で何とか実装してAC.もう少し良いデータの持ち方ありそう.D問題が茶色でE・F問題が青とは,極端やなぁ..
まーす.icon $ Z := X \cup Yとして,$ Zの値の小さい順から(左上から順に)埋めていこうと考えたが,これだと最後$ N \times Mとか大きい値を埋めるのが大変(入力例と矛盾が起きるかもしれない).昇順にやってもしんどそう.....方針は何個か立ちはしたけれど,私はおさぼりをしたいので,Fに逃げました.
〇F問題
Kaplam.iconやろうとはしたけど数学色強くてACまで持っていける気がしなかったのでG見てた、難易度逆転やめて!
CarpDay.icon多分DP使って1文字ずつ追加.xを追加したときにx-1とxが何個あるか記憶しておけば組合せで何とかなる?と思ったが,組合せの合計(個数がO(N))になるので効率良い方法を考えるも,自分の知識じゃ無理かな?と思ってE問題へ戻る.
CarpDay.icon 終了後に解説を確認.あああ.よくある組合せの合計を式変形する(または見方を変える)とシンプルな組合せになるやつだった..思いつきたかったなぁ..プログラム自体はシンプル.
まーす.icon E と F 同時進行でやってた.最終的にはCarpDay.iconさんと同じくDPを考えたが,上手い状態遷移を考えれなかった.
まーす.icon 解説チラ見したけど,なんか既視感あるぞ.......既視感の正体:ABC425のE問題
〇G問題
Kaplam.iconオートマトンなんだろうな~って見てたけどわかんない
CarpDay.icon さっぱり分からないから解説チラ見する.Kaplam.iconさん,すごい!
#AtCoder #ABC