ABC215

6完。Hは読んでない。難易度の傾斜がきれいな回だった。

A - Your First Judge

いつものYes/NoをAC/WAに書き換える。あ、ジャッジを実装しろという問題なのか。きれいだ。

B - log2(N)

早解きするのけっこう嫌なタイプの問題。まあ早解きモードでやった。結局時間かかったけど。

何が嫌かというと、「Nを超える最小の」という問題なら小さい順に試すだけで済むのに、これは「次は条件を満たさないかも」とビクビクしながら試す必要があるので。提出したコードは、次の値を求めてしまいそれがNを超えていたら今のkが答え、みたいな処理になっている。提出時にはあまりよくわかってなかった。サンプルに0があるのでまあ。

C - One More aab aba baa

ここでトイレに行きたくなる。直前までぷよぷよ最強リーグ観てたので、おしっこが溜まっていた。結果的にはうんこも出た。頑張ってDも読んでから行った。CD両方きれいに解けてトイレから出てきた。

8!でググると40320なので全探索みたいにできる。すぐにはわからなかったが、ソートしてからnext_permutationするだけ。一応DFSでもできるのかな。

D - Coprime 2

GCDが全部1ということは、Aに一つでも入ってる素数が一つも入ってないということ。線形篩でAに含まれる素数をチェックしておいて、現れたものの倍数を全部消す。残ったものを出力。線形篩をMまでしかやってなくて1ペナ。A_iはMより大きいことがあるんだから普通に10^5までやれ。

E - Chain Contestant

DPしたくなるけど、塊がいくつかに分かれていてそのどこを最初に選ぶかわからんしなあと思っていると、今までどの種類のコンテストに出たか2^10通りに分けてDPできると気づいた。あと、既にやった種類でも直前もそれならやっていい。もう解けてるけど実装でけっこう迷う。どっちがいいか(速く正確に書けるか)ほんとにわからんので、好みのin-placeで頑張った。2次元配列でどっちを内側にするかも実装しないとわからないから難しい(まあ実装してもちゃんとわかるわけではないけど「こっちにしたいな」という気分は得られる)。

F - Dist Max 2

まず「これほんとに"距離"か?」と思う。気になるけどこの問題の本質はそこじゃないだろうから、確認はコンテスト後にするとして、その値の最大値を求めることに集中する。今確認したら普通に三角不等式満たしてないじゃん、それを距離と呼ぶのはさすがに避けてほしいが。

最初は捉えどころがない。図を描いて全体を見ても求まりそうにないし、ペアの個数を考えると多すぎる。二分探索も思いついたが、そもそもこの"距離"がどういう形をしているかわからないのでできなかった(今思うと"距離"が1になる点の集合とかは図示しておくべきだった)。1点に注目してそこからの最大を見ることを考える。斜めの線を引いてそのどちら側かで相手のx座標を見るかy座標を見るかが変わる。つまり、x+yでソートして順に追加していけば、相手として限られた領域だけを見るなら、priority_queue(結局これ要らなくてただのmaxでよかったっぽい)とかで最大値が求まりそう。ということは、回転して同じことを何度もやれば解けていそう。結局上から右上までの45度を見る実装になったので、90度回転と鏡で8通りを試した。

G - Colorful Candies 2

BGMとして「カラフル×メロディ」が流れる。cは座標圧縮していい。ソートしてしまってもいいことはしばらく経ってから気づいた。選び方は2^N通りあって、包除とかも見える。種類数*選んだ個数で間に合わないのやばい。なので、何かうまい方法を見つけないといけない。なんか畳み込みをしたくなる。各色の個数だけが重要で、priority_queueで小さい順に畳み込みというのをとりあえず書く。まあ個数毎に持ってるのが種類数*通り数なので畳み込みできるんかという疑問はある。できなくて時間切れ。ただ、とりあえず書き切るところまで行けたのはよかった。他に考えたのは、色の種類数が極端に多くても少なくても楽そうなので結局楽な方法が存在するのではないかというもの。