Oddness全体感想91分6完(3ペナルティ)で47位でした。集中できていない自覚があったけど、何とか。先週と今週は、5完難易度と6完難易度の差が大きいセットですね。いう傾向になっていくのかな?ABCコンテストでも難問の経験が積めるのはありがたいです。経験から、左右からの累積を持てばよいというのが一瞬で見えたので、その方針で解きました。一般に、配列から1元抜いた状態をたくさん考えたいときに使えそうなアイデアですね。この問題は、単に除くものが最大値じゃなければ最大値。Boxes不思議な問い方ですが、一意に決まる問題です。大きい番号から条件を満たすようにしていきます。箱の状況を見て、辻褄が合うように決めます。程度であることが分かるので、計算量は十分です。下から決めようとして誤答したりしました。約数と倍数を勘違いしてる。Decomposing最長の単調減少列をとってくればよい。それらを起点に塗り始めて漏れが出たとしたら、減少列を延長できて矛盾します。減少なこととか、等しい値を許すことなどに注意して。大小順は入れ替えてから増大列として実装しました。Oddness不動点の個数ごとの数え上げ(撹乱順列)とかが頭をよぎるが、同様の方針をとってもdpできない。「$1$と$4$がswapされます」みたいに2点を入れ替えたとして、残った問題が小さい場合に帰着できない。問題を拡張してもうまくいかない。移し方を持たずとも、移り先として占める部分集合を持てば計算できそう。小さいので一応考えちゃうよね)。何とか「左から見ていくdp」ということで頑張って考える。1番をその場に残すか右に運ぶかだけ決めて、1番の到達位置は確定させない。2マス目に居て、そこからその場に留めるか、右に流すか、左に流すかなどを決める(1番は戻さない)。この方針で、(その場所で左右に移す数の個数、これまでに移した回数の合計)を持ってdp更新できる形になった。方針が立っても、実装がなかなか大変でここに30分かかった。右移動だけではなく左移動分の数え上げも考えないといけないし、移動してきたものを左に押し戻さないようにするなどに注意しながら、きちんと重複・漏れを回避した式を立てないといけない。慎重に慎重を重ねて実装し、バグなく1発AC。残り時間が10分を切っていました。細かい気を遣うところの多い問題だったので、これでWAが出ていたら10分じゃ直しきれたか怪しい。63分6完で39位でした。36分6完1ペナで、64位でした。86分6完(3ペナルティ)で45位でした。37分6完1ペナルティで22位でした。形式的べき級数解説pythonその他タイトルとURLをコピーしました。